本文最后更新于:星期五, 三月 20日 2020, 7:00 晚上
介绍
Thymeleaf 的 sec:authorize 标签可以在前端做权限控制
如:在用户界面显示登陆 还是注销,就得判断用户是否登陆
如果未登录
如果登陆了
除此之外,他还可以取出 security 中的用户名
导包
在导包之前先注意下 版本 问题
如果你用的 spring-boot-starter-security 版本是 x.y.z.RELEASE
那么你在整合时用的 thymeleaf-extras-springsecurityx
比如我用的是
<spring-security.version>5.2.2.RELEASE</spring-security.version>
那么我的 maven 中就要导如 5 的包
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>
同时 html 标签也得导入命名空间
<html lang="en" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5">
使用
判断是否登陆
<div sec:authorize="!isAuthenticated()">
<a> 没登录 ,显示登陆按钮 </a>
</div>
<!-- 登陆了显示注销 -->
<div sec:authorize="isAuthenticated()">
<a> 登陆,显示注销 </a>
</div>
已登陆,获取用户的用户名和角色
<div sec:authorize="isAuthenticated()">
您已经登陆 <span sec:authentication="name"></span>
<br>
角色 <span sec:authentication="principal.authorities"></span>
</div>
已登陆,根据用户的权限展示对应的内容
还可以根据用户的权限,决定是否显示 dom
<a th:href="@{/.../...}" sec:authorize="hasRole('power2')"
class="layui-btn">SVP</a>
意思是: 如果用户的权限是 power2 那么 显示这个 a 链接