Asp.net mvc 提供的防伪令牌用于与当前用户不同的基于声明的用户
在执行操作之前,我尝试使用[ValidateAntiForgeryToken]属性。如果我在未登录的情况下执行此操作,则当前有效。但是,如果在调用此操作之前通过ajax登录,则会出现此错误 提供的防伪令牌用于不同的基于索赔的应用程序 用户比当前用户多 我在我的登录表单中使用存在于网站布局中的Asp.net mvc 提供的防伪令牌用于与当前用户不同的基于声明的用户,asp.net-mvc,antiforgerytoken,Asp.net Mvc,Antiforgerytoken,在执行操作之前,我尝试使用[ValidateAntiForgeryToken]属性。如果我在未登录的情况下执行此操作,则当前有效。但是,如果在调用此操作之前通过ajax登录,则会出现此错误 提供的防伪令牌用于不同的基于索赔的应用程序 用户比当前用户多 我在我的登录表单中使用存在于网站布局中的@Html.AntiForgeryToken()。从那篇文章到up操作都有@Html.AntiForgeryToken()。我尝试使用Salt,但出现了错误 .我在操作中使用[ValidateAntiForg
@Html.AntiForgeryToken()
。从那篇文章到up操作都有@Html.AntiForgeryToken()
。我尝试使用Salt
,但出现了错误
.我在操作中使用[ValidateAntiForgeryToken]
属性
[ValidateAntiForgeryToken]
[ValidateInput(true)]
public ActionResult PrePaymentBank(CharterParam charterParam, string MobileForSMS){}
问题是什么?
我今天收到了这封信,修复方法是将[ValidateAntiForgeryToken]替换为[AutoValidateAntiforgeryToken] .NET Core 2更改了无法抑制用户的进程。抱歉,如果您没有使用.NET Core 2
当页面最初呈现时(即
@Html.AntiForgeryToken()
方法运行时),将为匿名用户生成防伪令牌
通过AJAX请求登录时,您将从匿名用户变为登录用户
稍后提交带有为匿名用户生成的防伪令牌的表单时,验证失败,因为(如异常状态所示)
“令牌”是针对不同的基于声明的用户的[即匿名用户
用户]比当前用户[即您自己登录的用户]”
要解决此问题,您需要确保在成功登录AJAX请求后重新生成防伪令牌。AFAIK,AFT不同的声明错误通常与控制器操作方法有关,请发布控制器代码,返回如图所示的视图。@TetsuyaYamamoto此表单存在于网站布局中。我使用此模式通过Ajax登录用户,登录后将另一个表单发布到预付款银行操作。您是指布局页面或部分视图中的AFT字段吗?如果它被放置在布局页面内,它可能会在使用相同布局的页面请求期间返回AFT异常,因为未经身份验证的用户的旧AFT仍然存在,而经过身份验证的用户使用它。