Azure 中的随机"The anti-forgery cookie token and form field token do not match"



我们得到随机的"防伪cookie令牌和表单字段令牌不匹配"的错误显示在错误登录与我们的网站托管在Azure。在意识到我们需要一个静态机器密钥后,我们将其添加到web中。配置validationKey和decryptionKey属性,然而,我们仍然有随机错误弹出。

在这里定义一下我对"随机"的使用,在每200-300个表单提交中,这种情况只会发生一两次。感觉发生的事情太多了,这对信任我们服务的客户来说是一个真正的中断。

我的另一个想法是,这是否发生在没有启用cookie的机器上。我还不能以这样或那样的方式验证,但我不知道cookie是否是ValidateAntiForgeryToken工作的必要条件。如果它确实需要cookie,那么我们是否应该弹出一条消息给我们的用户,让他们知道正确使用cookie是必需的?

我需要帮助来诊断这个问题,或者其他如何处理这个问题的想法。

提前谢谢你。

[UPDATE]我刚从一个用户那里听到我看到这个错误弹出。事实证明,他们加载页面后离开了一段时间,导致了错误。这是一个好消息,因为这意味着验证只是在做它的工作,没有发生任何疯狂的事情……我只需要验证这个数据点是否代表了其他用户。鉴于此,您如何处理令牌过期的情况?你是否以某种简洁的方式通知用户?

您有服务器场吗?也就是说,你有一个应用服务与自动缩放启用?还是多台机器的云服务?

如果是,检查你所有的机器密钥在你所有的web中被定义为相同的值。配置文件。机器密钥用于生成防伪造令牌。

能否记录失败请求的标头?您可以在全局变量中添加一些代码。

foreach (string header in request.Headers)
{
     // header <== header name
     // request.Headers[header]) <== header value
 }

最新更新