如果页面已空闲,来自CSRF的错误请求


Yii2 Bad Request from CSRF if page has been idle

如果页面空闲,即使是很短的时间(<5分钟),我也会得到一个糟糕的请求错误,这会导致糟糕的用户体验。是否有一种方法可以使CSRF键在页面空闲时也能工作?

(我假设这里没有来自另一个浏览器窗口/选项卡的其他请求,因为这也可能改变CSRF)

当前CSRF要么存储在自己的cookie中,要么存储在会话中。所以基本上,如果储存它的地方过期了,它就会过期。

所以基本上,如果你已经使用了Request::enableCsrfCookie(这是默认的),请确保也更新了Request::csrfCookie设置,以便稍后过期(你可以为此添加'expire')。它的基本值应该是"session"(直到浏览器窗口关闭)。

如果您不使用,CSRF存储在会话中,您将不得不提高会话的TTL