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