【发布时间】:2016-11-27 09:42:55
【问题描述】:
我想在我的 Web 项目的每个页面上显示当前经过身份验证的用户。
我使用@Security.Authenticated 注释来限制用户访问。
我有一个授权逻辑(方法),它使用user_id 会话值从数据库中检索当前用户数据。
所以,有几个问题需要解决:
- 我应该将
getCurrentUser()方法放在哪里以便在所有控制器的所有操作之前执行它? - 如何使
currentUser值在所有视图中可用? - 如何跳过某些操作的身份验证?
我现在所拥有的只是为了一项行动。我不想为其他操作重复此代码?我需要它为整个项目工作:
- 在所有操作之前执行
getCurrentUser()以获得currentUser值; - 使
currentUser值在视图中可用
控制器:
@Security.Authenticated(Secured.class)
public class UsersController extends Controller {
public Result index() {
return ok(index.render(getCurrentUser()));
}
private User getCurrentUser() {
return User.find.byId(Long.parseLong(request().username()));
}
}
查看(index.scala.html):
@(currentUser: User)
<p>Hello, @currentUser.name</p>
我要将此视图代码放入所有视图共享的main.scala.html 文件中。
【问题讨论】:
-
有过滤器作为中间件,你也许可以使用这些。
标签: playframework playframework-2.5