Java 验证与播放!2.4
我正在玩一个新的应用程序!2.4. 我在1.4上还有其他应用程序,我正在研究如何实现与游戏中类似的安全方法!1.x 我创建了一个安全控制器,如下所示: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
@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)