自定义授权属性不适用于缓存请求

时间:2016-04-28 07:24:05

标签: asp.net asp.net-mvc session authorization authorize-attribute

我正在开发一个小型的asp.net MVC项目。有一个Web服务可以验证客户。验证后,我将用户信息存储在Session变量中,并在注销后将其设置为null。我有一个这样的自定义授权过滤器:

public class MgAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext.Session["Customer"] == null)
        {
            httpContext.Server.TransferRequest("~/Upgrade/Login");
            return false;
        }

        return true;
    }
}

问题是在浏览器中按下后退按钮时不会检查用户。因此,即使在退出应用程序之后,用户也可以访问受保护的页面。 请建议我处理方案的最聪明的方法。 TIA。

2 个答案:

答案 0 :(得分:0)

也许你可以使用return RedirectToActionPermanent();来禁用后退按钮。这实现了你想要的吗?让我知道。

答案 1 :(得分:0)

我认为,当用户单击注销按钮时,您可以从浏览器的历史记录中删除所有访问。因此,当用户单击后退按钮时,他将无法访问上一页。要删除历史记录,您可以选中此link