我查看了"zentasks" sample code学习一些基本的用户登录和安全知识。应用程序 Controller 有一个 authenticate method ,并且在该方法期间 User.authenticate method叫做。以下是这些链接中的一些代码片段:
public static Result authenticate() {
Form<Login> loginForm = form(Login.class).bindFromRequest();
if(loginForm.hasErrors()) {
return badRequest(login.render(loginForm));
} else {
session("email", loginForm.get().email);
return redirect(
routes.Projects.index()
);
}
}
...
public static class Login {
public String email;
public String password;
public String validate() {
if(User.authenticate(email, password) == null) {
return "Invalid user or password";
}
return null;
}
}
如您所见,如果它通过身份验证(即找到 User 对象),则 authenticate
方法会将“电子邮件”添加到 session 中。我想添加完整的用户对象,但在我有 session 的 Controller 操作中,我没有 User
对象。我不想重新查询数据库,我想使用刚刚在 Login.validate
中找到的相同 User
对象。有什么好的方法可以做到这一点?
最佳答案
是否有理由不能简单地向登录类添加字段?
public static class Login {
public String email;
public String password;
public User user;
public String validate() {
user = User.authenticate(email, password);
if(user == null) {
return "Invalid user or password";
}
return null;
}
}
这不一定对您有帮助,查看 API,您似乎无法向 session 添加对象,只能添加字符串。
http://www.playframework.org/documentation/api/2.0.4/java/play/mvc/Http.Session.html
关于java - 在Play 2框架(Java)中,如何在身份验证后将用户对象添加到 session 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13401091/