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라는 클래스를 사용해 매번 호출마다 인증을 해볼 수도 있다. 









Posted by '김용환'
,