使用springboot+springsecurity+thymeleaf撸一个登录的demo,在处理sec标签的时间打死都出不来效果,网上的解决方法基本都是各种抄,各种降版本的骚操作,根本没有说到关键点。

现象是以下的标签,在访问时两个div是同时出现的,表明isAuthenticated()及isAnonymous()根本没有生效。

<div sec:authorize="isAuthenticated()">
<h1>你已经登录</h1>
</div>
<div sec:authorize="isAnonymous()">
<h1>你未登录</h1>
</div>

需要留意两点:

1.命名空间问题

html文件中需要添加以下命名空间,这是thymeleaf-extras-springsecurity全部版本共通的命名空间,如果你使用如“http://www.thymeleaf.org/thymeleaf-extras-springsecurity5”在IDEA中是没法智能提示的。

<html xmlns:sec="http://www.thymeleaf.org/extras/spring-security">

2.springsecurity版本的问题

这点在github的官网(​​https://github.com/thymeleaf/thymeleaf-extras-springsecurity​​)上说得很清楚,如下:

【JAVA】sec:authorize标签不生效的坑_命名空间

如果你的springsecurity用的是5.x的版本,那就使用thymeleaf-extras-springsecurity5,然后再看你用的thymeleaf用的是什么版本,如果是Thymeleaf3.0.10+的话,那你thymeleaf-extras-springsecurity5的版本应该选3.0.4.RELEASE(而不是选3.0.4.RELEASE+)。

我遇到的问题是,我的thymeleaf的版本是3.0.15,结果我的设定thymeleaf-extras-springsecurity5是3.1.0.RELEASE,页面一访问就是报500的错误。

~~聊以备忘~~