Thymeleaf Swich与春天安全

时间:2016-09-30 20:02:45

标签: spring-security thymeleaf

我正在努力建立一个电子商店。我想创建一个页面,当用户查看时,只显示数量大于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">

但它不起作用。

这是个玩笑吗?两个人编辑我的文字,但他们不知道答案......

2 个答案:

答案 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。