Spring Security中html页面设置hasRole无效的问题
Posted 深海收破烂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Security中html页面设置hasRole无效的问题相关的知识,希望对你有一定的参考价值。
Spring Security中html页面设置hasRole无效的问题
一、前言
学了几天的spring Security,偶然发现的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页面仍然写原来的角色名就行。
2019-04-0919:44:51
以上是关于Spring Security中html页面设置hasRole无效的问题的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security 如果是404直接报错,不要跳转认证?
如何使用spring security根据角色限制对html页面的访问?
使用 Spring Security 3.2.0.RELEASE,如何在没有标签库的纯 HTML 页面中获取 CSRF 令牌