SimpleMembership を使用して ASP.Net MVC 4 Web サイトを開発すると、ユーザーがログインしていても Login GET コントローラーが呼び出されることがあります。 cshtml ページ。.cshtmlページを変更した後、一貫してではなく、時々発生します。
テンプレートによって提供されるメソッドにロギングを追加したLogin()
ところ、ユーザーが実際に認証され、ログイン ユーザーが持つべきすべての役割を持っていることがわかりました。
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
if (User.Identity.IsAuthenticated)
{
logger.Error("User " + User.Identity.Name + " is authenticated shown login form. Roles: " + string.Join(", ", Roles.GetRolesForUser(User.Identity.Name)));
// Temporary work-around: WebSecurity.Logout();
}
ViewBag.ReturnUrl = returnUrl;
return View();
}
質問
- この動作の原因は何ですか?
- アプリ ドメインがリサイクルされた場合など、実稼働システムでこれが発生する可能性はありますか?
- ログイン ビューを返す前に呼び出すという回避策
WebSecurity.Logout()
は、セキュリティの観点から適切ですか?