【问题标题】:MVC handle 401 response on any requestMVC 处理任何请求的 401 响应
【发布时间】:2018-10-24 19:48:55
【问题描述】:

我有一个 C# MVC Web 应用程序,该应用程序将在 30 分钟不活动后使用户的会话过期,在此之后,如果用户尝试在网站上执行任何操作,由于令牌过期,它将是未经授权的。当我从任何我希望能够将用户重定向到主页的地方收到该请求时,我该怎么做?

【问题讨论】:

    标签: c# http session model-view-controller http-status-code-401


    【解决方案1】:

    您可以在控制器级别或个人操作级别处理此问题。当您收到未经授权的 401 请求时,使用自定义属性重定向到您想要的页面(在您的情况下为主页)。

    public class CustomAuthorize : AuthorizeAttribute
    {
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            //filterContext.Result = new HttpUnauthorizedResult(); // Try this but i'm not sure
              filterContext.Result = new RedirectResult("~/Home/Unauthorized");
        }
    
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            if (this.AuthorizeCore(filterContext.HttpContext))
            {
                base.OnAuthorization(filterContext);
            }
            else
            {
                this.HandleUnauthorizedRequest(filterContext);
            }
        }
    
    }
    

    并在控制器或动作级别应用它

    [CustomAuthorize(Roles = "Admin")]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多