记录一个很古怪的问题

记录一个很古怪的问题

一个很奇怪的问题

这两天启动了Spring项目,然后把现在用的JIDOX模板拆解成Thymeleaf模板。

但是发现一个非常奇怪的问题,就是启用了Spring Security的安全配置之后,Thymeleaf里所有渲染th:action= 都会诱发错误,然后发现只要method="post"就会出错,method="get"则不会,然后发现问题就出在无法正确的渲染csrf字段上。经测试关闭csrf就不会出现问题。

我一开始还以为是模板的问题,还自己下载了tabler重新编译之后再尝试,问题依旧。

问AI也压根没用。最后终于在stackoverflow上找到了答案:

有两种解决办法

一是在配置Spring Security的时候加上强制所有访问都带上session:

http.sessionManagement()
        .sessionCreationPolicy(SessionCreationPolicy.ALWAYS)

二是在application.properties中配置:

spring.thymeleaf.servlet.produce-partial-output-while-processing=false 

第一种方式会让Spring在访问所有路径都带上session,包括静态文件,这样会增加开销。第二种方式是延迟Thymeleaf的渲染时间,等到组装相应的时候再进行渲染即可。

接下来就愉快的编写用户部分的代码了。慢慢重构吧。

LICENSED UNDER CC BY-NC-SA 4.0
Comment