「zentasks」サンプルコードを見て、基本的なユーザーログインとセキュリティに関することを学びました。Appicationコントローラーには認証メソッドがあり、そのメソッドの間に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;
}
}
ご覧のとおり、認証する(つまり、Userオブジェクトを見つける)と、authenticate
メソッドはセッションに「電子メール」を追加します。代わりに完全なユーザーオブジェクトを追加したいのですが、セッションがあるコントローラーアクションでは、User
オブジェクトがありません。データベースを再クエリしたくありません。User
で見つかったのと同じオブジェクトを使用したいと思いますLogin.validate
。それを行うための良い方法は何ですか?