我尝试在操作之前使用[ValidateAntiForgeryToken]属性。如果我在没有登录的情况下执行此操作,则目前正在使用。但是,如果我在调用此操作之前通过ajax登录,则会收到此错误。
提供的防伪令牌适用于不同的声明 用户比当前用户。
我在网站布局中存在的登录表单@Html.AntiForgeryToken()
中使用。从该帖子到更新操作已@Html.AntiForgeryToken()
。我尝试使用Salt
但收到错误
.I使用行动[ValidateAntiForgeryToken]
属性。
[ValidateAntiForgeryToken]
[ValidateInput(true)]
public ActionResult PrePaymentBank(CharterParam charterParam, string MobileForSMS){}
答案 0 :(得分:1)
我今天得到了这个,修复是用[AutoValidateAntiforgeryToken]替换[ValidateAntiForgeryToken]
.NET Core 2改变了无法抑制用户的过程。对不起,如果你没有使用.NET Core 2。
答案 1 :(得分:0)
页面最初呈现时(即@Html.AntiForgeryToken()
方法运行时),将为您的匿名用户生成防伪令牌。
通过AJAX请求登录时,您将从匿名用户更改为登录用户。
以后提交带有为匿名用户生成的防伪令牌的表单时,验证失败,因为(作为例外情况)
“令牌是针对其他基于声明的用户 [即匿名 用户] ,而不是当前用户。您登录的自我] “
要解决此问题,您需要确保在成功登录AJAX请求后重新生成防伪令牌。