我正在努力建立一个电子商店。我想创建一个页面,当用户查看时,只显示数量大于0的项目,但当管理员查看同一页面时,他们可以看到所有项目都可以添加/编辑/删除项目,无论数量是0还是更多。 我想也许我可以像这样使用Thymeleaf和Spring Security:
<div th:switch=sec:authorize="hasAuthority('admin')">
<div th:case="'admin'" class="tilt pic" id="whoKnows" >
<div th:case="'user'" class="tilt pic" th:unless="${viewAvailableWhisky.quantityWhisky} == 0">
但它不起作用。
这是个玩笑吗?两个人编辑我的文字,但他们不知道答案......答案 0 :(得分:1)
两年后。
如果您想坚持使用th:switch
方法,可以采用以下方法:
<div th:switch="${#authorization.expression('hasAuthority(''ROLE_ADMIN'')')}">
<div th:case="true" class="tilt pic" id="whoKnows">ADMIN</div>
<div th:case="false" class="tilt pic"
th:unless="${viewAvailableWhisky.quantityWhisky} == 0">USER</div>
</div>
答案 1 :(得分:0)
来自http://www.thymeleaf.org/doc/articles/springsecurity.html:
sec:authorize属性在属性时呈现其内容 表达式被评估为真
直接使用sec:authorize:
<div sec:authorize="hasAuthority('admin')" class="tilt pic" id="whoKnows"></div>
<div sec:authorize="hasAuthority('user')" class="tilt pic" th:unless="${viewAvailableWhisky.quantityWhisky} == 0"></div>
您的解决方案无效,因为您的切换条件将解析为true或false,但不会解析为“admin”或“user”。如果用户具有'admin'权限,hasAuthority('admin')将解析为true,否则将解析为false。