注销后无法阻止访问安全的ASP.NET MVC4页面

时间:2013-11-13 14:26:07

标签: c# html5 asp.net-mvc-4 authentication

我正在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")
                }

我正在使用表单身份验证,一切正常但在我从页面注销后,我仍然可以通过单击后退按钮访问受保护的页面。

我可以知道我在哪里犯了错误

1 个答案:

答案 0 :(得分:1)

愚蠢的错误,我应该在我的安全页面上使用[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")]而不是登录。