Play框架2 - 在Java中是经过验证的

时间:2012-07-24 15:39:43

标签: java authentication playframework

在我的操作中,我想呈现不同的视图(或者可能只显示其他一些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(Secured.class)注释,但事情如何有条件?

1 个答案:

答案 0 :(得分:0)

取决于你想要达到的目标。如果您只需要决定用户是否登录,您可以在控制器类中使用类似于您编写的内容,例如:

public static boolean loggedIn() {
        return (session().get("userId") != null);
    }

然后在静态控制器方法中检查用户是否已登录:

if (!loggedIn()) {
            return redirect(routes.Application.login());
        }

注意使用session(),您可以通过它访问安全会话cookie的地图,然后从那里获取用户ID。如果你想实现更复杂的逻辑,例如。针对不同用户群的不同行为,那就是一个不同的故事。

使用经过身份验证的用户ID-s在缓存中使用一些映射,并在会话中验证userId,无论它是否在映射中,或者您可以使用用户的某些属性(例如,一组userRoles)并相应地设置可见的内容。这些是我所知道的最明智的方式。

(以下是如何使用控制器的session(): ControllerSession