微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我收到与反伪造属性相关的运行时错误

执行以下步骤:

>创建一个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 举报,一经查实,本站将立刻删除。

相关推荐