MVC обрабатывать 401 ответ на любой запрос - PullRequest
0 голосов
/ 24 октября 2018

У меня есть веб-приложение C # MVC, которое завершит сеанс пользователя через 30 минут после неактивности, после чего, если пользователь попытается что-либо сделать на сайте, он будет неавторизован по истечении срока действия токена.Когда я получу этот запрос из любой точки мира, я хочу иметь возможность перенаправить пользователя на домашнюю страницу, как мне это сделать?

1 Ответ

0 голосов
/ 24 октября 2018

Вы можете справиться с этим на уровне контроллера или на уровне индивидуального действия.Используйте пользовательский атрибут для перенаправления на нужную страницу (домашнюю страницу в вашем случае), когда вы получаете неавторизованный запрос 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")]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...