play.api.mvc

Security

Related Doc: package mvc

object Security

Helpers to create secure actions.

Source
Security.scala
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Security
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Type Members

  1. class AuthenticatedBuilder[U] extends ActionBuilder[[A]AuthenticatedRequest[A, U]]

    An authenticated action builder.

    An authenticated action builder.

    This can be used to create an action builder, like so:

    // in a Security trait
    object Authenticated extends AuthenticatedBuilder(req => getUserFromRequest(req))
    
    // then in a controller
    def index = Authenticated { implicit request =>
      Ok("Hello " + request.user)
    }

    It can also be used from an action builder, for example:

    class AuthenticatedDbRequest[A](val user: User,
                                    val conn: Connection,
                                    request: Request[A]) extends WrappedRequest[A](request)
    
    object Authenticated extends ActionBuilder[AuthenticatedDbRequest] {
      def invokeBlock[A](request: Request[A], block: (AuthenticatedDbRequest[A]) => Future[Result]) = {
        AuthenticatedBuilder(req => getUserFromRequest(req)).authenticate(request, { authRequest: AuthenticatedRequest[A, User] =>
          DB.withConnection { conn =>
            block(new AuthenticatedDbRequest[A](authRequest.user, conn, request))
          }
        })
      }
    }
  2. class AuthenticatedRequest[A, U] extends WrappedRequest[A]

    An authenticated request

Value Members

  1. final def !=(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  4. def Authenticated(action: (String) ⇒ EssentialAction): EssentialAction

    Wraps another action, allowing only authenticated HTTP requests.

    Wraps another action, allowing only authenticated HTTP requests.

    The user name is retrieved from the (configurable) session cookie, and added to the HTTP request’s username attribute. In case of failure it returns an Unauthorized response (401)

    For example:

     //in a Security trait
     def isAuthenticated(f: => String => Request[AnyContent] => Result) = {
       Authenticated { user =>
         Action(request => f(user)(request))
       }
     }
    //then in a controller
    def index = isAuthenticated { username => implicit request =>
        Ok("Hello " + username)
    }
    action

    the action to wrap

  5. def Authenticated[A](userinfo: (RequestHeader) ⇒ Option[A], onUnauthorized: (RequestHeader) ⇒ Result)(action: (A) ⇒ EssentialAction): EssentialAction

    Wraps another action, allowing only authenticated HTTP requests.

    Wraps another action, allowing only authenticated HTTP requests. Furthermore, it lets users to configure where to retrieve the user info from and what to do in case unsuccessful authentication

    For example:

     //in a Security trait
     def username(request: RequestHeader) = request.session.get("email")
     def onUnauthorized(request: RequestHeader) = Results.Redirect(routes.Application.login)
     def isAuthenticated(f: => String => Request[AnyContent] => Result) = {
       Authenticated(username, onUnauthorized) { user =>
         Action(request => f(user)(request))
       }
     }
    //then in a controller
    def index = isAuthenticated { username => implicit request =>
        Ok("Hello " + username)
    }
    A

    the type of the user info value (e.g. String if user info consists only in a user name)

    userinfo

    function used to retrieve the user info from the request header

    onUnauthorized

    function used to generate alternative result if the user is not authenticated

    action

    the action to wrap

  6. object AuthenticatedBuilder

    An authenticated action builder.

    An authenticated action builder.

    This can be used to create an action builder, like so:

    // in a Security trait
    object Authenticated extends AuthenticatedBuilder(req => getUserFromRequest(req))
    
    // then in a controller
    def index = Authenticated { implicit request =>
      Ok("Hello " + request.user)
    }

    It can also be used from an action builder, for example:

    class AuthenticatedDbRequest[A](val user: User,
                                    val conn: Connection,
                                    request: Request[A]) extends WrappedRequest[A](request)
    
    object Authenticated extends ActionBuilder[AuthenticatedDbRequest] {
      def invokeBlock[A](request: Request[A], block: (AuthenticatedDbRequest[A]) => Future[Result]) = {
        AuthenticatedBuilder(req => getUserFromRequest(req)).authenticate(request, { authRequest: AuthenticatedRequest[A, User] =>
          DB.withConnection { conn =>
            block(new AuthenticatedDbRequest[A](authRequest.user, conn, request))
          }
        })
      }
    }
  7. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  8. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  9. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  10. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  11. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  12. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  13. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  14. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  15. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  16. final def notify(): Unit

    Definition Classes
    AnyRef
  17. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  18. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  19. def toString(): String

    Definition Classes
    AnyRef → Any
  20. lazy val username: String

    Key of the username attribute stored in session.

  21. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  23. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped