我收到与反伪造属性相关的运行时错误。
执行以下步骤:
>创建一个MVC Web应用程序并启动
>注册joe@acme.org
>退出
>注册jane@acme.org
>退出
>登录为joe@acme.org
>点击后退按钮
>登录为jane@acme.org
错误:提供的反伪造令牌是针对与当前用户不同的基于声明的用户。
可以做什么来防止发生这种错误?
解决方法
这是忽略错误并将用户返回到登录屏幕的一种方式。这只是一个例子。
创建一个名为HandleAntiforgeryTokenErrorAttribute的类继承自HandleErrorAttribute。覆盖OnException方法。
public class HandleAntiforgeryTokenErrorAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { filterContext.ExceptionHandled = true; filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary(new { action = "Login",controller = "Account" })); } }
转到您的FilterConfig类并将该属性注册为全局过滤器。
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new HandleAntiforgeryTokenErrorAttribute() { ExceptionType = typeof(HttpAntiForgeryException) } ); } }