Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Play framework 2-已在Java中验证_Java_Authentication_Playframework - Fatal编程技术网

Play framework 2-已在Java中验证

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 {

在我的操作中,我希望根据用户是否经过身份验证来呈现不同的视图(或者可能只显示一些其他div)

我是否应该这样做:

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的会话(): ,)