Play framework 2-已在Java中验证
在我的操作中,我希望根据用户是否经过身份验证来呈现不同的视图(或者可能只显示一些其他div) 我是否应该这样做:Play framework 2-已在Java中验证,java,authentication,playframework,Java,Authentication,Playframework,在我的操作中,我希望根据用户是否经过身份验证来呈现不同的视图(或者可能只显示一些其他div) 我是否应该这样做: public static Result index() { if (Context.current().request().username().equals("")) { // user is NOT authenticated return ok(welcome.render()); } else {
public static Result index() {
if (Context.current().request().username().equals("")) {
// user is NOT authenticated
return ok(welcome.render());
} else {
// user is authenticated
return ok(dashboard.render());
}
}
检查用户是否在视图中经过身份验证,如何?
我知道我可以使用@Security.Authenticated(securied.class)注释,但是如何实现条件化呢?取决于您试图实现的目标。如果您只需要决定用户是否登录,您可以在控制器类中使用您编写的内容,例如:
public static boolean loggedIn() {
return (session().get("userId") != null);
}
然后在静态控制器方法中检查用户是否登录:
if (!loggedIn()) {
return redirect(routes.Application.login());
}
注意使用session()可以访问安全会话cookie的映射,从中可以获得用户id。如果您想要实现更复杂的逻辑,例如,不同用户组的不同操作,那么情况就不同了
或者在缓存中使用一些具有经过身份验证的用户id-s的映射,并在会话中验证用户id(无论它是否在映射中),或者您可以使用用户的某些属性(例如,一组用户角色)并相应地设置可见的内容。这些是我所知道的最明智的方法
(以下是如何使用controller的会话():
,)