sec:授权在 Spring 引导应用程序中使用 Thymeleaf 未按预期工作



我正在尝试添加指向表中新行的链接,此链接应该只能由管理员角色访问。

春季启动 : 1.4.0.发布 & thymeleaf-extras-springsecurity4.version : 2.1.2.RELEASE

<sec:authorize access="hasRole('ROLE_ADMIN')">
<tr>
<td>...</td>
<td>...</td>
</tr>
</sec:authorize>

使用的命名空间是:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">

网络安全配置适配器:

http.authorizeRequests()
.antMatchers("/api/systemuser/*").access("hasRole('ROLE_ADMIN')")
//.antMatchers("/*").access("hasRole('ROLE_ADMIN')")
//.antMatchers("/ui/report/win").access("hasRole('ROLE_USER')")
//.antMatchers("/userError").access("hasRole('ROLE_ERROR')")
.antMatchers("/swagger*/**", "/about", "/").authenticated()
.anyRequest().authenticated()
.and()
.httpBasic()
.authenticationEntryPoint(authenticationEntryPoint)
;
http.csrf().disable();

但是有了这个代码,即使是没有管理员权限的用户也可以查看表的行。

有人可以帮助我前进吗?

它应该可以工作。 我很确定您也将ROLE_ADMIN添加到该用户。 尝试调试呈现您使用标记的 jsp 的控制器,tehn 从身份验证中获取您的主体对象

authentication.getPrincipal()

并遍历对象,直到找不到授予权限,在那里检查用户是否有ROLE_ADMIN

最新更新