Asp.net mvc 5 提供的防伪令牌是为用户提供的;用户名";,但当前用户是&引用;
当我使用用户凭证登录时,第一次登录应用程序时没有错误 但当我注销并再次使用其他用户的凭据登录时,出现了一个错误 提供的防伪令牌用于用户“UserName”,但当前用户为“” 我正在用asp.net mvc 5实现Asp.net mvc 5 提供的防伪令牌是为用户提供的;用户名";,但当前用户是&引用;,asp.net-mvc-5,antiforgerytoken,iprincipal,Asp.net Mvc 5,Antiforgerytoken,Iprincipal,当我使用用户凭证登录时,第一次登录应用程序时没有错误 但当我注销并再次使用其他用户的凭据登录时,出现了一个错误 提供的防伪令牌用于用户“UserName”,但当前用户为“” 我正在用asp.net mvc 5实现AntiForgoryToken和IPrincipal 我试过: AntiForgeryConfig.suppressIdentityEuristicChecks=true在应用程序_Start()中 我已经参考了这个链接 如何修复此错误 提前感谢。您实际上不需要在登录的post方法上检
AntiForgoryToken
和IPrincipal
我试过:
AntiForgeryConfig.suppressIdentityEuristicChecks=true代码>在应用程序_Start()中
[Authorize]
和[ValidateAntiForgeryToken]
属性修饰它们。然而,loginpost方法不需要这些属性中的任何一个
更新:这是非常必要的。请参阅Stephen Muecke评论中的答案。我发现我的IIS实例同时启用了匿名和Windows身份验证,这导致我的应用程序出现此异常 此设置似乎是导致此异常的原因。ValidateAntiForgeryToken操作筛选器似乎正在使用Anon身份验证中填充了空字符串的当前用户,然后尝试将其与使用Win身份验证填充的令牌进行匹配 通过关闭Windows或匿名身份验证(对于我的应用程序,我关闭了Anon身份验证),令牌现在匹配起来了 可以在IIS管理器或web.config文件中更改此设置,如下所示
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
您是否将[ValidateAntiForgeryToken]属性放在登录操作上?如果是这样,请尝试删除它。是的,我在登录的post方法中添加了[ValodataAntiforyToken]
,但在只返回登录页面的get方法中没有添加。很有趣!!因此,如何保护登录和用户的凭据,因为您肯定需要登录方法上的令牌,我建议您阅读“感谢您的回答”,并尝试以下内容:)。