我一直在玩认证。我希望能够在某些页面上为登录的人提供一些额外的功能。问题是如果我不对控制器类使用@Security.Authenticated(Secured.class)
注释,我就无法从会话中获取用户名,所以我无法检查用户是否已登录。
我应该怎么做?我应该确保所有页面都经过身份验证,然后拥有某种自动用于其他会话的访客登录,或者是否有办法检查用户是否已登录,即使在没有@Security.Authenticated(Secured.class)
注释的类上也是如此。
如果有人能指出我正确的方向,如果有可用的教程可以做到这一点或只是一些指导,那将是很棒的。
答案 0 :(得分:0)
你应该做两件事:
阻止未经身份验证的用户查看模板中的功能:
@if(session().containsKey(Secured.SESSION_AUTH_KEY)) { /* Your comment form */ }
阻止未经身份验证的用户访问您的操作:
@Security.Authenticated(Secured.class)
public static Result submitComment() {
...
}
使用:
public class Secured extends Security.Authenticator {
public static final String SESSION_AUTH_KEY = "email";
public String getUsername(Http.Context context) {
return context.session().get(SESSION_AUTH_KEY);
}
public Result onUnauthorized(Http.Context context) {
...
}
}