【发布时间】:2018-10-24 19:48:55
【问题描述】:
我有一个 C# MVC Web 应用程序,该应用程序将在 30 分钟不活动后使用户的会话过期,在此之后,如果用户尝试在网站上执行任何操作,由于令牌过期,它将是未经授权的。当我从任何我希望能够将用户重定向到主页的地方收到该请求时,我该怎么做?
【问题讨论】:
标签: c# http session model-view-controller http-status-code-401
我有一个 C# MVC Web 应用程序,该应用程序将在 30 分钟不活动后使用户的会话过期,在此之后,如果用户尝试在网站上执行任何操作,由于令牌过期,它将是未经授权的。当我从任何我希望能够将用户重定向到主页的地方收到该请求时,我该怎么做?
【问题讨论】:
标签: c# http session model-view-controller http-status-code-401
您可以在控制器级别或个人操作级别处理此问题。当您收到未经授权的 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")]
【讨论】: