我正在尝试通过cookie管理我的用户。这并不容易,因为绝对没有关于这个主题的文档。
在样本“zentask”的帮助下,我做了这个:
session("username", filledForm.field("username").value());
public class Secured{
public static Session getSession() {
return Context.current().session();
}
public static String getUsername() {
return getSession().get("username");
}
public static boolean isAuthorized() throws Exception {
String username = getUsername();
if (username == null)
return false;
long userCount = DatabaseConnect.getInstance().getDatastore()
.createQuery(User.class).field("username").equal(username)
.countAll();
if (userCount == 1)
return true;
return false;
}
我正在使用它:
public static Result blank() throws Exception {
if (Secured.isAuthorized())
return ok(Secured.getUsername());
else
return ok(views.html.login.form.render(loginForm));
}
现在我有几个问题/问题:
1。)Cookie没有被去除异常,看起来总是一样。例如bdb7f592f9d54837995f816498c0474031d44c1a-username%3Akantaki
2。)Security.Authenticator类有什么作用?
3。)我认为通过cookie进行用户管理是一个非常普遍的问题,确实可以玩!2.0为我提供了完整的解决方案吗?或者至少有一些文件?
答案 0 :(得分:12)
如Zentask sample所示,您的Secured
课程应该延长Security.Authenticator
。
有了这个,它将允许在Controller或Action上放置@Security.Authenticated
注释。如果未正确授权用户(通过覆盖Security.Authenticator.onUnauthorized()
方法),此批注允许将客户端重定向到另一个页面。
工作流程如下:
答案 1 :(得分:12)
Joscha Feth还有authentication
和authorization
- Play Authenticate的完整筹码。 (可在GitHub获得)
它包含即用型 Java样本,它使用securesocial
+完整Deadbolt 2(Steve Chaloner)支持的概念。它有:
register
和log in
用户提供了可能性。roles
和permissions
(通过Deadbolt 2)其中有Java示例应用程序。您可以将其合并到您的应用中。