CRSF LazyCsrfTokenRepository 如何工作?

d-m*_*man 2 spring csrf spring-security csrf-protection

Java 8 - 弹簧 4.3.x

在配置 spring 安全性和启用 csrf 功能时,我遇到了两种实现,CsrfTokenRepository一种是 Lazy,另一种是基于 Cokkie

我知道CookieCsrfTokenRepository可以使用将 csrf 令牌写入 cookie 并在标头中接受 cookie 值来验证有效请求

有人可以帮助我了解它是如何LazyCsrfTokenRepository工作的吗?

hol*_*s83 5

javadoc

一个CsrfTokenRepository是延误节能新CsrfToken直至的属性CsrfToken生成的访问的。

那为什么会这样呢?在 Spring Security 的早期版本中,这HttpSessionCsrfTokenRepository是默认值。这样做的缺点是它总是创建一个令牌,触发会话创建,无论是否使用令牌,这在某些应用程序中可能是浪费的。

LazyCsrfTokenRepository另一方面仅创建一个包装,并创建仅当实际令牌getToken()被调用(例如当生成表单等)。这避免了不必要的会话创建。

以A疑难杂症LazyCsrfTokenRepository的是,HTTP响应之前的实际令牌生成,则仍必须承诺,否则,你会得到一个异常。如果您对此有疑问,最容易使用(仅)其他两种实现中的一种。