在我当前的 spring-boot 项目中,我的视图的标头具有以下指令:
<a sec:authorize="hasRole('admin')" th:href="@{/home}">...</a>
当我运行应用程序并在浏览器中打开视图时,这不起作用(即使用户具有角色)。在同一个视图中,我也使用 sec:authorize="isAuthenticated()"
和 sec:authorize="isAnonymous()"
,两者都工作正常。在我的 java 代码中,我有一些带有此注释的方法:
@PreAuthorize("hasRole('admin')")
这也工作正常。为什么这在视图中不起作用?任何人都可以告诉我这里出了什么问题?
因为您必须在角色名前添加"ROLE_"。
喜欢这个:
sec:authorize="hasRole('ROLE_admin')"
春季 3 开始,ROLE_
前缀应该是不必要的。
尝试使用 hasAuthority('admin')
而不是 hasRole()
。这篇文章描述了两者之间的区别