System.Web. Mvc .HttpAntiForgeryException Предоставленный токен защиты от подделки был предназначен для пользователя «xxxx», но текущий пользователь «» по истечении сеанса - PullRequest
0 голосов
/ 14 июля 2020

В моем приложении MVC 5.0 я получаю "System.Web. Mvc .HttpAntiForgeryException Предоставленный токен защиты от подделки предназначен для пользователя" xxxx ", но текущий пользователь является исключением" "", когда метод действия который был украшен атрибутом [ValidateAntiForgeryToken], вызывается после истечения сеанса.

Я написал ExceptionFilter для обработки этой ошибки, но не получил код ошибки этой ошибки. Есть идеи, что такое код ошибки для этого?

Код для недавно добавленного файла Exception: в этом коде вместо Exception.Message check Я хочу использовать код ошибки, который однозначно идентифицирует эту ошибку. Я хочу выбросить все другие ошибки, связанные с антифальшивом, кроме этой.

public override void OnException(ExceptionContext filterContext)
    {
        if (filterContext.Exception is HttpAntiForgeryException 
            && **filterContext.Exception.Message.Contains("The provided anti-forgery token was meant for user")**)
        {
            var routeFactory = DependencyResolver.Current.GetService<IMapRouteFactory>();
            var route = routeFactory.Current;
            var result = new RedirectToRouteResult("Logout",
                new System.Web.Routing.RouteValueDictionary
                {
                    {"network", route.Network},
                    {"reason", "sessiontimeout"}
                });
            filterContext.Result = result;
            filterContext.ExceptionHandled = true;
        }
        base.OnException(filterContext);
    }
...