springboot+security+thymeleaf中sec:authorize中hasRole不生效

thymeleaf编写前端web页面时需要根据权限对一些菜单进行显示控制,后端使用springsecurity进行认证
写页面时控制新增按钮只有管理员界面出现

<span sec:authorize="hasRole('ADMIN')" ><button class="layui-btn layuiadmin-btn-useradmin" data-type="edit">编辑</button></span>

但sec:authorize=“hasRole(‘ADMIN’)”,没有生效。
解决方法:
看到很多都说过跟版本有关,就改了版本,以为生效了,其实并没有
其实是跟后端接口传的角色名称有关。
页面中使用hasRole去判断,后台接口中的authorities中存放的是必须是“ROLE_”开头的角色名,在页面中可以带“ROLE_”,也可以不带。即

<span sec:authorize="hasRole('ADMIN')"  >管理员</span>
<span sec:authorize="hasRole('ROLE_ADMIN')" >管理员</span> 

两种用法是一样的。
但如果后台接口中authorities中存放的是“ADMIN”等不以“ROLE_”开头的角色名,前端页面可以采用hasAnyAuthority来判断,即

<span sec:authorize="hasAnyAuthority('ADMIN')">管理员</span>

解决过程中看到一些用法也记录一下

<div sec:authorize="isAuthenticated()">
		<p>已登录</p>
		<p>登录名:<span sec:authentication="name"></span></p>
		<p>Password:<span sec:authentication="principal.password"></span></p>
		<div sec:authentication="principal.authorities"></div> <!-- works fine -->
		<p>Name:<span sec:authentication="principal.username"></span></p>
		<p>Status:<span sec:authentication="principal.status"></span></p>
</div>
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值