我查看了“zentasks”示例代码来学习一些基本的用户登录和安全知识。Appication 控制器有一个authenticate 方法,在该方法期间调用User.authenticate 方法。以下是这些链接中的几个代码片段:
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
方法会将“电子邮件”添加到会话中。我想添加完整的用户对象,但是在我有会话的控制器操作中,我没有User
对象。我不想重新查询数据库,我想使用User
刚刚在Login.validate
. 这样做的好方法是什么?