thymeleaf 权限
时间: 2023-07-06 18:37:42 浏览: 49
Thymeleaf 本身并不提供权限控制的功能,但可以结合 Spring Security 实现权限控制。
在 Thymeleaf 中,可以使用 th:if 和 th:unless 属性来控制页面元素的显示和隐藏,结合 Spring Security 中的 hasRole、hasAnyRole、hasAuthority、hasAnyAuthority 等方法实现权限控制。
例如,以下代码可以实现只有具有 "ADMIN" 角色的用户才能看到某个链接:
```html
<a th:href="@{/admin}" th:if="${#authorization.expression('hasRole(''ADMIN'')')}">Admin Page</a>
```
其中,#authorization 是 Thymeleaf/Spring Security 提供的一个对象,可以用来调用 Spring Security 中的方法,expression 方法用于执行表达式。
在 Spring Security 配置中,需要配置访问控制规则,例如:
```java
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasAnyRole("ADMIN", "USER")
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.logout().permitAll();
}
```
这里配置了 "/admin/**" 路径需要具有 "ADMIN" 角色的用户才能访问,"/user/**" 路径需要具有 "ADMIN" 或 "USER" 角色的用户才能访问,其他路径需要进行身份验证后才能访问。