sec:授权不要在百里香叶代码中使用 hasRole 方法工作



在我当前的 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() 。这篇文章描述了两者之间的区别

相关内容

最新更新