【问题标题】:Spring boot Application with Thymeleaf. Using Constants to check hasAuthority带有 Thymeleaf 的 Spring Boot 应用程序。使用常量检查 hasAuthority
【发布时间】:2021-08-21 22:22:15
【问题描述】:

在我的类中定义常量并在 UI 中使用来验证用户是否有权限,向用户显示菜单,否则隐藏它。按照我实现的方式参考下面的代码。

<li sec:authorize="hasAuthority('${T(com.sample.application.security.Privilege).ADMIN}')" class="nav-item" th:classappend="${template} == 'Home' ? 'active':''">

但是,它没有按我的预期工作。我期待 thymeleaf 将 ${T(com.sample.application.security.Privilege).ADMIN} 转换为 ADMIN 并将其验证为 hasAuthority('ADMIN') 但那不起作用。有没有其他方法可以在百里香中进行此验证。实现这一点的最佳方法是什么?

更新:也尝试将常量分配给 thymeleaf 局部变量。也没用。

<ul class="navbar-nav" th:with="admin=${T(com.sample.application.security.Privilege).ADMINISTRATOR}, groupAdmin=${T(com.sample.application.security.Privilege).APPLICATION_GROUP_ADMIN}, basicUser=${T(com.sample.application.security.Privilege).APPLICATION_BASIC_USER}" >
                <li sec:authorize="hasAuthority(${basicUser}) OR hasAuthority(${admin})" class="nav-item" th:classappend="${template} == 'home' ? 'active':''">
                    <a class="nav-link" href="/myApplication/User">Customer Home</a>
                </li>......</ul>

【问题讨论】:

  • 您能否详细说明“它没有按我预期的那样工作”的确切含义?
  • 你可以试试hasAuthority(${T(come.sample.application.security.Privilege).ADMIN}) 吗? (所以没有单引号)
  • 我期待 thymeleaf 将 ${T(come.sample.application.security.Privilege).ADMIN} 转换为 ADMIN 并将其验证为 hasAuthority('ADMIN') 但那不起作用。跨度>
  • 也尝试不使用单引号并得到异常 Expression [hasAuthority(${T(come.sample.application.security.Privilege).ADMIN})] @14: EL1043E: Unexpected token。预期为“rparen())”,但为“lcurly({)”
  • 尝试了其他一些选项,但我似乎无法使其正常工作。 stackoverflow.com/questions/47945701/… 声称有可能,但建议的解决方案对我不起作用。

标签: spring-boot twitter-bootstrap spring-security thymeleaf


【解决方案1】:

尝试了几种方法。下面的解决方案没有任何问题。

<ul class="navbar-nav">
<li sec:authorize="${hasAuthority(T(com.sample.application.security.Privilege).ADMINISTRATOR) OR hasAuthority(T(com.sample.application.security.Privilege).APPLICATION_GROUP_ADMIN)}" class="nav-item" th:classappend="${template} == 'home' ? 'active':''">
    <a class="nav-link" href="/myApplication/User">Customer Home</a>
</li>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-02
    • 2021-03-28
    • 2023-03-22
    • 1970-01-01
    • 2019-03-12
    • 2017-12-26
    • 1970-01-01
    • 2016-11-23
    相关资源
    最近更新 更多