Search code examples
scalaauthenticationfilterplayframework-2.2

Scala on Play 2.2: How do I redirect a page in a filter?


Also, I how do I give the user the requested page when the if statement is not satisfied?

Here is what I have so far:

object AuthFilter extends EssentialFilter {
  def apply(next: EssentialAction) = new EssentialAction {
    def apply(request: RequestHeader) = {
      if(request.session.get("auth").isEmpty && !request.path.contains("/login")){
        //redirect to login page.
      } else {
        //show requested page.
        next(request) //is this correct?
      }
    }
  }
}

Solution

  • Why not extends Filter instead of EssentialFilter?

    object AuthFilter extends Filter {
    
      def apply(next: (RequestHeader) => Future[SimpleResult])(request: RequestHeader): Future[SimpleResult] = {
        if(request.session.get("auth").isEmpty && !request.path.contains("/login")){
            Future.successful(Ok(views.html.yourLoginPage()))
          } else {
            next(request)
          }
      } 
    }