thymeleaf获取用户权限
时间: 2023-08-09 17:05:39 浏览: 96
在Thymeleaf中获取用户权限,可以使用Spring Security提供的标签和表达式。
1. `<sec:authorize>`标签
`<sec:authorize>`标签可以根据用户是否具有某个权限来显示或隐藏内容。比如,如果用户具有`ROLE_ADMIN`权限,可以这样写:
```
<sec:authorize access="hasRole('ROLE_ADMIN')">
<div>只有管理员能看到这个内容</div>
</sec:authorize>
```
2. Spring Security表达式
Spring Security提供了一些表达式,可以用来检查用户是否具有某个权限。这些表达式可以在Thymeleaf中使用。例如:
```
<div th:if="${#authorization.expression('hasRole(''ROLE_USER'')')}">
只有普通用户能看到这个内容
</div>
```
3. 在Controller中获取用户权限
如果您需要在Controller中获取用户权限,可以使用`Authentication`对象。例如:
```java
@GetMapping("/myPage")
public String myPage(Authentication authentication, Model model) {
boolean isAdmin = authentication.getAuthorities().stream()
.anyMatch(a -> a.getAuthority().equals("ROLE_ADMIN"));
model.addAttribute("isAdmin", isAdmin);
return "myPage";
}
```
在上面的代码中,`authentication.getAuthorities()`方法返回一个包含用户权限的`GrantedAuthority`对象列表。您可以使用`stream()`方法将其转换为`Stream<GrantedAuthority>`,然后使用`anyMatch()`方法检查用户是否具有某个权限。在这个例子中,我们检查用户是否具有`ROLE_ADMIN`权限,并将结果存储在模型中,以便在Thymeleaf中使用。
阅读全文