【问题标题】:Custom Authorization Attribute not working on cached request自定义授权属性不适用于缓存的请求
【发布时间】:2016-04-28 07:24:05
【问题描述】:

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

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。

【问题讨论】:

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


    【解决方案1】:

    也许您可以使用return RedirectToActionPermanent(); 禁用后退按钮。这能达到你想要的吗?告诉我。

    【讨论】:

    • 感谢您的回复。实际上我现在正在做的是类似的事情 - 使用 javascript 禁用后退按钮。但这不是我想要的。我不想妨碍浏览器的自然行为。相反,我更希望,只要用户想要访问未经授权的操作,系统就会被重定向到登录页面。
    猜你喜欢
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多