用thyemeleaf寻求春季安全方面的帮助。我想在spring security hasRole()函数中传递特定角色作为参数。
<li sec:authorize="hasRole(__${someVariable}__)" th:if="${#authentication}">
我只想将我的角色作为变量传递“somevariable”将具有类似'admin','systemadmin'等的价值
仅供参考。我正在使用Thymeleaf + Spring
答案 0 :(得分:0)
我可以通过使用来解决它:
${#authorization.expression('hasRole(__${someVariable}__)')}
答案 1 :(得分:0)
我以避免尝试破解双下划线(例如__${someVariable}__
)语法的方式解决了相同的基本问题。
<th:block th:with="secAuth=${yourNormalModelAccessHere}">
<li class="nav-item" sec:authorize="${#authorization.expression(#vars.secAuth)}">
</th:block>
希望这对某人有帮助。 :)
答案 2 :(得分:-1)
通过一些变量是什么意思?如果您已正确实现了spring安全性,则可以使用sec:authorize="hasRole('ROLE_ADMIN')
等来评估hasRole。此外,您不需要包含th:if
,因为sec:authorize属性在评估属性表达式时呈现其内容真
参见参考here
答案 3 :(得分:-1)
我会抛弃sec:authorize
而是这样写:
<li th:if="${#request.isUserInRole(someVariable)}">
(假设有一些最近版本的Servlet API并在Thymeleaf模板中使用Spring Expression Language。)