我正在开发asp.net核心Web应用程序。我使用Identity进行用户授权。 会话到期时用户重定向到登录视图。然后用户尝试提交登录表单,有时会出现此异常:
Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgeryTokenSerializer.
The antiforgery token could not be decrypted.
但是如果他重新加载页面并尝试再次提交表单,用户可以毫无问题地登录旅店。
我在本地计算机上的同一个网站没有这个问题。
我已经读过以相同形式应用两次的防伪令牌可能导致这种情况,但我只有一个令牌,我已经检查过了。
其他建议是使用
<machineKey decryptionKey="Decryption key goes here, IsolateApps"
validationKey="Validation key goes here, IsolateApps" />
</system.web>
这篇文章在this文章中有所描述,情况与我的相似。但文章从2013年开始变老。 所以我不确定我是否可以在asp.net核心中使用它。人们说这种方式在asp.net核心中不起作用。我没有找到任何其他建议如何解决asp.net核心问题。 所以也许有人遇到同样的问题,可以帮助我吗?
答案 0 :(得分:1)
我对本地计算机上的同一网站没有这个问题。
您是否将应用程序部署到多台计算机上? 然后,您在正确的轨道上查看机器密钥。问题是不同的Web服务器将以不同方式加密和解密。
本文介绍ASP.NET核心的数据保护: https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/introduction
您选择哪种数据保护提供商取决于您的环境。