Spring Security中html页面设置hasRole无效的问题

一、前言

    帮同事解决问题的时候,偶然发现的hasRole和hasAnyAuthority的区别。当然,可能有更深入的我没看到。现在把我实际的调试结果分享给大家

二、失效原因及解决

    下面是部分示例html页面代码

        <div sec:authorize="hasRole('R_ADMIN')">
            <p class="bg-info">权限0001可见</p>
        </div>
        <div sec:authorize="hasRole('ROLE_MD')">
            <p class="bg-info">权限0002可见</p>
        </div>
        <div sec:authorize="hasAnyAuthority('R_ADMIN')">
            <p class="bg-info">权限0003可见</p>
        </div>
        <div sec:authorize="hasRole('ROLE_MD')">
            <p class="bg-info">权限0004可见</p>
        </div>
        <div sec:authorize="hasAnyAuthority('ADMIN')">
            <p class="bg-info">权限0005可见</p>
        </div>
        <div sec:authorize="hasRole('MD')">
            <p class="bg-info">权限0006可见</p>
        </div>

   实际测试发现以下两点。

    第一、在html页面中如果要使用hasRole去设置权限,那么必须是以ROLE_开头的角色。而hasAnyAuthority则不存在这个问题。查了一下官方文档并没有什么有用的东西。如果各位同学查到可以留言补充

     再次调试发现第二点

    第二、在html页面中使用hasRole时可以省略掉ROLE_部分,只在后端放入角色的时候前面加上ROLE_即可,而hasAnyAuthority不支持这么做。即当一个角色名是ROLE_MD的用户登录时,她能看到2、4、6;所以在权限的放入时,比如:auths.add(new SimpleGrantedAuthority(role.getRoleCode()));可以在前面加个ROLE_,html页面仍然写原来的角色名就行。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值