Java 验证与播放!2.4

Java 验证与播放!2.4,java,playframework,playframework-2.0,Java,Playframework,Playframework 2.0,我正在玩一个新的应用程序!2.4. 我在1.4上还有其他应用程序,我正在研究如何实现与游戏中类似的安全方法!1.x 我创建了一个安全控制器,如下所示: @With(Security.class) public abstract class SecureController extends Controller { } 然后我有了Security.class: public class Security extends Action.Simple { public F.Promi

我正在玩一个新的应用程序!2.4. 我在1.4上还有其他应用程序,我正在研究如何实现与游戏中类似的安全方法!1.x

我创建了一个安全控制器,如下所示:

@With(Security.class)
public abstract class SecureController extends Controller {

}
然后我有了Security.class:

public class Security extends Action.Simple {   
    public F.Promise<Result> call(Http.Context ctx) throws Throwable {   
        if(ctx.session().containsKey("pwdHash") && ctx.session().containsKey("securityId")){
            User user = User.find.where().eq("id",ctx.session().get("securityId")).findUnique();
            if(user != null) {
                if(user.getAuthToken().equals(ctx.session().get("pwdHash"))) {
                    // TODO: Don't think this works yet.
                    ctx.request().setUsername(user.getEmail());
                    return delegate.call(ctx);
                }
            }
        }    
        ctx.session().put("referer", ctx.request().path());
        return F.Promise.pure(redirect(routes.Logon.doLogon()));
    }
}
创建注释显然非常简单:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Check {

    UserTask value();

}
但是,如果用户拥有给定注释所需的权限,我现在如何让系统检查SecureController的每个方法?在play 1.x中有play.mvc,在它之前可以使用它

[编辑] 我的意图是添加如下内容:

@Check(UserTask.REGISTRATION)
public static Result index(int page)

经过进一步研究,我在剧中找到了解决办法!文档 上面的问题已经在正确的方向上了,我只需要通过添加注释并将其链接到操作(然后使用注释调用函数)来扩展它


不要将注释添加到控制器的顶层,只需在方法层添加注释。我打算在特定方法中添加一个@Check(xxx),指示用户需要的安全级别。单独添加安全类的注释不会提供这种灵活性。
@Check(UserTask.REGISTRATION)
public static Result index(int page)