【发布时间】: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