我正在ASP.NET MVC 4中使用自己的登录/注销模块,我在注销操作结果中清除会话,也没有使用以下代码存储缓存。
[HttpGet]
public ActionResult Login()
{
return View();
}
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")]
[HttpPost]
public ActionResult Login(Models.User user)
{
if (ModelState.IsValid)
{
if (user.IsValid(user.UserName, user.Password))
{
FormsAuthentication.SetAuthCookie(user.UserName, user.RememberMe);
return RedirectToAction("Index", "Admin");
}
else
{
ModelState.AddModelError("", "Login data is incorrect!");
}
}
return View(user);
}
public ActionResult Logout()
{
FormsAuthentication.SignOut();
Session.Clear();
Session.Abandon();
Session.RemoveAll();
return RedirectToAction("Index", "Home");
}
主页索引控制器
[Authorize]
public ActionResult Index()
{
return View();
}
布局cshtml
@if (Request.IsAuthenticated)
{
<strong>@Html.Encode(User.Identity.Name)</strong>
@Html.ActionLink("Sign Out", "Logout", "User")
@Html.ActionLink("Grid", "Index", "Admin")
}
else
{
@Html.ActionLink("Sign In", "Login", "User")
}
我正在使用表单身份验证,一切正常但在我从页面注销后,我仍然可以通过单击后退按钮访问受保护的页面。
我可以知道我在哪里犯了错误
答案 0 :(得分:1)
愚蠢的错误,我应该在我的安全页面上使用[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")]
而不是登录。