Darinが提供するソリューションは機能しますが。しかし、私に言わせれば、Facebook はそのソリューションを実装していません。適切な解決策を実装するのはそれほど難しくないと思います。2 つのことを行う必要があります。
認証されたユーザーがログインページにアクセスできないことを確認してください。
次のように login get メソッドを変更できます
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
//Important
if (Request.IsAuthenticated)
{
return RedirectToAction("Action", "Controller"); // ur action and controller
}
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
return RedirectToLocal(returnUrl);
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
ログインページがキャッシュされていないことを確認してください
このコードを上記のメソッドに挿入して、ロジック ページがキャッシュから返されないようにします。
Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
NoCache
または、Login メソッドで ActionFilter を使用できます。上記と同じことを行います。