加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – “后退”按钮和防伪令牌

发布时间:2020-12-16 00:23:50 所属栏目:asp.Net 来源:网络整理
导读:我收到与反伪造属性相关的运行时错误。 执行以下步骤: 创建一个MVC Web应用程序并启动 注册joe@acme.org 退出 注册jane@acme.org 退出 登录为joe@acme.org 点击后退按钮 登录为jane@acme.org 错误:提供的反伪造令牌是针对与当前用户不同的基于声明的用户。
我收到与反伪造属性相关的运行时错误。

执行以下步骤:

>创建一个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) }
        );
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读