【问题标题】:ASP.NET MVC Anti-Forgery Token IssuesASP.NET MVC 防伪令牌问题
【发布时间】:2015-01-29 09:06:39
【问题描述】:

我们在 ASP.NET MVC 4 站点上使用 Amazon EC2 Elastic Beanstalk,但在用户尝试登录后出现错误:

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

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

对于像 EC2 这样的动态 Web 服务器环境中的 ASP.NET MVC,是否需要做一些特别的事情来处理这个问题?

【问题讨论】:

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


【解决方案1】:

您需要在 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

【讨论】:

  • 谢谢,这很好用。我没有使用 IsolateApps 部分。有必要吗?
  • 很高兴知道它有效,不需要,这就是为什么stackoverflow.com/a/15400821/499930
  • 只是检查除了添加机器密钥之外是否还有其他选项。如果我更改服务器,我将不得不不断更新我的配置中的机器密钥
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我的解决方法是像这样获取 cookie 和表单令牌值:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-07
      • 2013-11-27
      • 2014-06-25
      • 2014-04-26
      • 2015-01-11
      • 2011-08-11
      • 2019-06-09
      相关资源
      最近更新 更多