MVC处理401对任何请求的响应

时间:2018-10-24 09:16:59

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

我有一个C#MVC Web应用程序,该应用程序将在闲置30分钟后使用户的会话期满,在那之后,如果用户尝试在网站上执行任何操作,则该令牌将被未经授权。当我从任何地方希望能够将用户重定向到首页时,该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以在控制器级别或个人操作级别处理此问题。当您收到未经授权的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")]
相关问题