LazyCsrfTokenRepository

LazyCsrfTokenRepository

Java 8-Spring 4.3.x

在配置spring安全性并启用csrf功能时,我遇到了CsrfTokenRepository的两个实现,一个是惰性的,另一个是基于Cokkie的。

我知道CookieCsrfTokenRepository的工作原理是将csrf令牌写入cookie并接受标头中的cookie值以验证有效请求

有人可以帮助我了解LazyCsrfTokenRepository的工作原理吗?

最佳答案

javadoc


CsrfTokenRepository会延迟保存新的CsrfToken直到
访问生成的CsrfToken的属性。


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

另一方面,LazyCsrfTokenRepository仅创建包装器,并且仅在调用getToken()时才创建实际令牌(例如,例如,生成表单时)。这样可以避免不必要的会话创建。

LazyCsrfTokenRepository的一个棘手问题是,实际的令牌生成必须仍在提交HTTP响应之前进行,否则会出现异常。如果您对此有疑问,则最简单的方法是仅(使用)其他两个实现之一。

10-04 14:13