ASP.NET MVC反伪造令牌问题

时间:2015-01-29 09:06:40

标签: asp.net asp.net-mvc amazon-ec2

我们在ASP.NET MVC 4网站上使用Amazon EC2 Elastic Beanstalk,并在用户尝试登录后收到错误消息:

  

无法解密防伪令牌。如果这个应用程序是   由Web场或群集托管,确保所有计算机都在运行   相同版本的ASP.NET网页和   configuration指定显式加密和验证密钥。   无法在群集中使用AutoGenerate。

我们认为问题可能是由于会话状态处于proc并且具有动态实例,因此我们将其移至SQL Server但仍然收到错误。奇怪的是,有时候登录很好,有时你会得到错误。

在像EC2这样的动态Web服务器环境中,是否需要采取一些特殊措施来处理ASP.NET MVC的这个问题?

3 个答案:

答案 0 :(得分:2)

您需要在webconfig中明确设置解密密钥和验证密钥

<configuration>
  <system.web>
    <machineKey decryptionKey="Decryption key goes here, IsolateApps" 
                validationKey="Validation key goes here, IsolateApps" />
  </system.web>
</configuration>

您可以查看以下文章了解详情http://iamdotnetcrazy.blogspot.com/2013/08/how-to-solve-anti-forgery-token-could.html

答案 1 :(得分:1)

我删除了'IsolatedApps',这似乎对我有用。

答案 2 :(得分:0)

我的解决方法是获取cookie和表单令牌值,如下所示:

AntiForgery.GetTokens(null, out var cookieToken, out var formToken);