Leo*_*ley 1 scala playframework playframework-2.0
在Play2的zentasks示例中,我们有了方法
def isAuthenticated(f: => String => Request[AnyContent] => Result) = {
Security.Authenticated(username, onUnauthorized) { user =>
Action(request => f(user)(request))
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是添加另一种方法,如果我想直接从数据库中获取用户,我可以使用它.
在所有方法中添加包装器会有点无聊
def method() = isAuthenticated { username => implicit request =>
UserDAO.findOneByEmail(username).map { user =>
Ok(html.user.view(user))
}.getOrElse(Forbidden)
}
Run Code Online (Sandbox Code Playgroud)
我是函数式编程的新手,所有这些=>让我头晕目眩:)
有什么建议?
您可以定义另一个方法,例如IsAuthenticatedUser,它将采用类型的参数User => Request[AnyContent] => Result:
def IsAuthenticatedUser(f: User => Request[AnyContent] => Result) = IsAuthenticated { email => request =>
UserDAO.findOneByEmail(email).map { user =>
f(user)(request)
}.getOrElse(Forbidden)
}
Run Code Online (Sandbox Code Playgroud)
然后您可以像下面这样使用它:
def method = IsAuthenticatedUser { user => request =>
Ok(html.user.view(user))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1838 次 |
| 最近记录: |