【问题标题】:sec:authorize don't work in the thymeleaf code with hasRole methodsec:authorize 在带有 hasRole 方法的 thymeleaf 代码中不起作用
【发布时间】:2015-02-24 00:30:23
【问题描述】:

在我当前的 spring-boot 项目中,我的视图的标题有以下说明:

<a sec:authorize="hasRole('admin')" th:href="@{/home}">...</a>

当我运行应用程序并在浏览器中打开视图时它不起作用(即使用户具有角色)。在同一个视图中,我还使用了sec:authorize="isAuthenticated()"sec:authorize="isAnonymous()",它们都可以正常工作。在我的 java 代码中,我有一些带有此注释的方法:

@PreAuthorize("hasRole('admin')")

也可以正常工作。为什么这在视图中不起作用?谁能告诉我这里出了什么问题?

【问题讨论】:

    标签: java spring spring-security spring-boot thymeleaf


    【解决方案1】:

    因为您必须在角色名称前添加“ROLE_”。

    像这样:

    sec:authorize="hasRole('ROLE_admin')"
    

    【讨论】:

      【解决方案2】:

      我相信从 Spring 3 开始,ROLE_ 前缀应该是不必要的。

      尝试使用hasAuthority('admin') 而不是hasRole()。两者的区别在this帖子中有描述

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-04
        • 2020-06-12
        • 2014-12-12
        • 2020-08-05
        • 2016-04-17
        • 2014-06-14
        • 2015-11-16
        • 2018-04-23
        相关资源
        最近更新 更多