对于同一请求中的某些调用,CSRF验证失败

问题描述

登录页面后,应用程序会多次调用显示报告。间歇地,一些呼叫失败,并显示500错误,并显示以下消息:“ 未提供必需的防伪令牌或该令牌无效”。

并非总是如此。有时。整个请求成功,并且报告没有问题。其他时候,我看到这个防伪错误

在同一请求中,我们有相同的__RequestVerificationToken失败和正常通话。会话ID也相同。知道为什么发生此问题吗?

成功请求:

enter image description here

请求失败:

enter image description here

解决方法

问题

CSRF令牌正用于身份验证之后的请求CSRF令牌仅对初始会话有效。进行身份验证后,将创建一个新会话,因此需要一个新的CSRF令牌。

TL; DR

您看到一个invalid token错误,因为您使用的令牌来自用户登录之前的会话

解决方案

验证用户身份后刷新CSRF令牌。

参考

验证后刷新CSRF令牌:https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery?view=aspnetcore-3.1#refresh-tokens-after-authentication