Play Framework 2 Java可选身份验证

时间:2015-04-03 07:32:36

标签: java playframework-2.0

我一直在玩认证。我希望能够在某些页面上为登录的人提供一些额外的功能。问题是如果我不对控制器类使用@Security.Authenticated(Secured.class)注释,我就无法从会话中获取用户名,所以我无法检查用户是否已登录。

我应该怎么做?我应该确保所有页面都经过身份验证,然后拥有某种自动用于其他会话的访客登录,或者是否有办法检查用户是否已登录,即使在没有@Security.Authenticated(Secured.class)注释的类上也是如此。

如果有人能指出我正确的方向,如果有可用的教程可以做到这一点或只是一些指导,那将是很棒的。

1 个答案:

答案 0 :(得分:0)

你应该做两件事:

  1. 阻止未经身份验证的用户查看模板中的功能:

    @if(session().containsKey(Secured.SESSION_AUTH_KEY)) { /* Your comment form */ }
    
  2. 阻止未经身份验证的用户访问您的操作:

    @Security.Authenticated(Secured.class)
    public static Result submitComment() {
        ...
    }
    
  3. 使用:

    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) {
            ...
        }
    }