在.net .core网络应用中,防伪令牌无法解密

时间:2017-05-08 16:19:18

标签: asp.net asp.net-core asp.net-identity antiforgerytoken

我正在开发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核心问题。  所以也许有人遇到同样的问题,可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

  

我对本地计算机上的同一网站没有这个问题。

您是否将应用程序部署到多台计算机上? 然后,您在正确的轨道上查看机器密钥。问题是不同的Web服务器将以不同方式加密和解密。

本文介绍ASP.NET核心的数据保护: https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/introduction

您选择哪种数据保护提供商取决于您的环境。