【发布时间】:2012-08-06 14:12:06
【问题描述】:
这是Java Play! 2 - User management with cookies的后续跟进
来自 zentask 示例
public class Secured extends Security.Authenticator {
@Override
public String getUsername(Context ctx) {
return ctx.session().get("email");
}
@Override
public Result onUnauthorized(Context ctx) {
return redirect(routes.Application.login());
}
// Access rights
public static boolean isMemberOf(Long project) {
return Project.isMember(
project,
Context.current().request().username()
);
}
public static boolean isOwnerOf(Long task) {
return Task.isOwner(
task,
Context.current().request().username()
);
}
}
对我来说,这真的没有意义。
用户获得以下 cookie。例如“email=test@test.com”
如果我转到“安全”页面,zentask 只检查电子邮件是否不为空。这怎么可能是安全的?
会话的原因是为了减轻数据库的负担。但是使用这种方法,他必须不断检查用户是否有权访问安全页面。
对我来说,这真的没有意义。为什么会有getUsername函数?为什么返回类型是字符串?
我想做这样的事情:
用户登录并获得一个类似于“value=randomString”的cookie
保护缓存中的用户对象,例如
Cache.set(randomstring,userObject);现在,如果访问者回来,我检查他的随机字符串是否在我的缓存中,如果是,则检查现金中的用户对象是否有权访问受保护的页面。
我能够做到这一点,只是没有 @Security.Authenticated() 注释。
这个注解可以实现吗?
【问题讨论】:
标签: java authentication playframework-2.0