问题场景复现
- SpringBoot版本 v2.2.6
- 在html中写sec的各个功能的时候, 发现页面不起效果
- 在网上页查了许多, 看了许多博客, 无非就是说更改SpringBoot的版本, 说SpringBoot的版本太高了啥的, 改成低版本的确实有用, 本人亲测过, 但是没有根本说出来为什么这样就能解决这个问题, 所以在这里我详细记录一下解决过程, 当然, 首先得鸣谢Husky博主对这个问题的精彩描述, 我也是得益于他
解决过程
- 百度 ,找到一种解决方案, 将SpringBoot的版本降低到低版本, 我的是从2.2.6降到了2.0.x版本, 亲测有效, 这里就不多说为什么了
- 为什么SpringBoot v2.2.6就不能生效呢?
1: 看spring-boot-starter-parent标签里面的spring-boot-dependencies, 看看spring-boot的父项目帮我们导入了哪些东西
2:
图一图二
图三
3:再来看一张官方的图
图中明确指出了thymeleaf-extras-springsecurity3 4 5和spring-security3 4 5的对应关系, 在上面图三中, SpringBoot v2.2.6引入的spring-security是5.2.2.RELEASE版本的, 也就是 5.x.x, 而依赖文件我们写的是thymeleaf-extras-springsecurity4, 所以势必造成了版本不对应问题, 所以对SpringBoot v2.2.6版本解决这个问题的最好的解决方案是将thymeleaf-extras-springsecurity换成5版本的4:将版本对应上之后, 就有效果了最后
在html中引入命名空间的时候,也需要指定一个版本的thymeleaf-extras-springsecurity,最好是和项目依赖中的相同。遇到版本问题多看官方文档就好了