私はMVCを初めて使用するので、この質問は些細なことかもしれません。LogOnアクションでは、次のことを行います。
public ActionResult LogOn(UserModel userModel, string returnUrl)
{
ActionResult retvalue = null;
UserProfile user = MyDatabaseAccess.Instance.GetAuthenticatedUser(userModel.EmailAddress, userModel.Password);
if (user != null)
{
FormsAuthentication.SetAuthCookie(userModel.EmailAddress, userModel.RememberMe);
Session["LoggedOnUser"] = user;
if (Url.IsLocalUrl(returnUrl))
{
retvalue = Redirect(returnUrl);
}
else
{
retvalue = RedirectToAction("Home", "Home");
}
}
else
{
retvalue = RedirectToAction("LogOn", "Account");
}
return retvalue;
}
この時点で、私のセッションには完全なUserProfileオブジェクトがあり、それをWebサイト全体で使用していますが、これまでのところ正常に機能しています。
次にユーザーがWebサイトにアクセスしたとき、ユーザーはすでに認証されており(remembermeはtrueに設定されています)、User.Identity.Nameには、以前に認証されたユーザーの電子メールアドレスが含まれています。これは正しいものです。問題は、LogOnアクションで行うのと同じ方法でUserProfileをセッションにロードしたいということです。すべての[承認済み]アクションではなく、それを実行する単一の場所が必要です。
そのような方法はありますか?