Play2 Frame에는 괜찮은 인증이 있지만.. 간단하게 구현한 인증 방식(basic authentication)이다.
application.conf
play.http.filters = filters.Filters
Filters.java
package filters
import javax.inject.Inject
import play.api.http.{DefaultHttpFilters, EnabledFilters}
class Filters @Inject() (
defaultFilters: EnabledFilters,
logging: LoggingFilter,
authFilter : AuthFilter,
) extends DefaultHttpFilters (defaultFilters.filters :+ logging :+ authFilter : _*)
AuthFilter.java
package filters
import javax.inject.Inject
import akka.stream.Materializer
import play.api.mvc._
import scala.concurrent.{ExecutionContext, Future}
class AuthFilter @Inject() (implicit val mat: Materializer, ec: ExecutionContext) extends Filter {
def apply(nextFilter: RequestHeader => Future[Result])
(requestHeader: RequestHeader): Future[Result] = {
if (!requestHeader.path.startsWith("/login") && requestHeader.headers.get("X-Auth-User").isEmpty) {
Future(Results.Forbidden)
} else { // AuthService.authenticate(requestHeader.headers.get("X-Auth-User"))
nextFilter(requestHeader).map { result =>
result
}
}
}
}
여기에 X-Auth-User 정보를 읽고 임의의 AuthService라는 클래스를 사용해 매번 호출마다 인증을 해볼 수도 있다.
'scala' 카테고리의 다른 글
[spark] 스파크 MLlib으로 비정상 데이터를 찾기에 좋은 참조 자료 (0) | 2018.03.14 |
---|---|
[spark] 여러 모드에서 스파크 잡 실행하기 예제 (0) | 2018.03.14 |
[play] scala play framework에서 인증/권한(authentication/authorization) 참조 문서 - 펌 (0) | 2018.02.09 |
[play] JWT token 예제 (0) | 2018.02.09 |
play 2.6 새로운 기능 (0) | 2018.02.08 |