我查看了"zentasks" sample code以了解一些基本的用户登录和安全方面的知识。应用程序控制器有一个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;
}
}正如您所看到的,如果它通过了身份验证(即找到一个用户对象),则authenticate方法会将"email“添加到会话中。我想要添加完整的user对象,但是在控制器操作中,我有会话,我没有User对象。我不想重新查询数据库,我想使用刚刚在Login.validate中找到的同一个User对象。有什么好方法可以做到这一点呢?
发布于 2012-11-16 03:28:37
有没有什么原因不能简单地将字段添加到登录类中?
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,你似乎不能将对象添加到会话中,只能添加字符串。
http://www.playframework.org/documentation/api/2.0.4/java/play/mvc/Http.Session.html
https://stackoverflow.com/questions/13401091
复制相似问题