这两天启动了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的渲染时间,等到组装相应的时候再进行渲染即可。
接下来就愉快的编写用户部分的代码了。慢慢重构吧。