我收到与反伪造属性相关的运行时错误。
执行以下步骤:
>创建一个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) } ); } }
原文地址:https://www.jb51.cc/aspnet/252163.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。