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

一、前言

学了几天的spring Security,偶然发现的hasRole和hasAnyAuthority的区别。当然,可能有更深入的我没看到。现在把我实际的调试结果分享给大家

二、失效原因及解决

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

  1.  
    <div sec:authorize="hasRole('R_ADMIN')">
  2.  
    <p class="bg-info">权限0001可见</p>
  3.  
    </div>
  4.  
    <div sec:authorize="hasRole('ROLE_MD')">
  5.  
    <p class="bg-info">权限0002可见</p>
  6.  
    </div>
  7.  
    <div sec:authorize="hasAnyAuthority('R_ADMIN')">
  8.  
    <p class="bg-info">权限0003可见</p>
  9.  
    </div>
  10.  
    <div sec:authorize="hasRole('ROLE_MD')">
  11.  
    <p class="bg-info">权限0004可见</p>
  12.  
    </div>
  13.  
    <div sec:authorize="hasAnyAuthority('ADMIN')">
  14.  
    <p class="bg-info">权限0005可见</p>
  15.  
    </div>
  16.  
    <div sec:authorize="hasRole('MD')">
  17.  
    <p class="bg-info">权限0006可见</p>
  18.  
    </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无效的问题的更多相关文章

  1. 看源码,重新审视Spring Security中的角色(roles)是怎么回事

    在网上看见不少的博客.技术文章,发现大家对于Spring Security中的角色(roles)存在较大的误解,最大的误解就是没有搞清楚其中角色和权限的差别(好多人在学习Spring Security ...

  2. 六:Spring Security 中使用 JWT

    Spring Security 中使用 JWT 1.无状态登录 1.1 什么是有状态? 1.2 什么是无状态 1.3 如何实现无状态 2.JWT 2.1 JWT数据格式 2.2 JWT交互流程 2.3 ...

  3. 五:Spring Security 中的角色继承问题

    Spring Security 中的角色继承问题 以前的写法 现在的写法 源码分析 SpringSecurity 在角色继承上有两种不同的写法,在 Spring Boot2.0.8(对应 Spring ...

  4. [收藏]Spring Security中的ACL

    ACL即访问控制列表(Access Controller List),它是用来做细粒度权限控制所用的一种权限模型.对ACL最简单的描述就是两个业务员,每个人只能查看操作自己签的合同,而不能看到对方的合 ...

  5. Spring Security 中的过滤器

    本文基于 spring-security-core-5.1.1 和 tomcat-embed-core-9.0.12. Spring Security 的本质是一个过滤器链(filter chain) ...

  6. Spring Security 中的 Bcrypt

    最近在写用户管理相关的微服务,其中比较重要的问题是如何保存用户的密码,加盐哈希是一种常见的做法.知乎上有个问题大家可以先读一下: 加盐密码保存的最通用方法是? 对于每个用户的密码,都应该使用独一无二的 ...

  7. 浅谈使用spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配

    浅谈使用springsecurity中的BCryptPasswordEncoder方法对密码进行加密(encode)与密码匹配(matches) spring security中的BCryptPass ...

  8. Spring Security中实现微信网页授权

    微信公众号提供了微信支付.微信优惠券.微信H5红包.微信红包封面等等促销工具来帮助我们的应用拉新保活.但是这些福利要想正确地发放到用户的手里就必须拿到用户特定的(微信应用)微信标识openid甚至是用 ...

  9. 干货|一个案例学会Spring Security 中使用 JWT

    在前后端分离的项目中,登录策略也有不少,不过 JWT 算是目前比较流行的一种解决方案了,本文就和大家来分享一下如何将 Spring Security 和 JWT 结合在一起使用,进而实现前后端分离时的 ...

随机推荐

  1. 3D Slicer中文教程(五)—三维视图颜色改变

    3D Slicer在分割后三维重建的图像,效果很好,但是存在一定的不足,默认的颜色并不是很合适,这时手动设置三维视图下的需要的颜色就很有必要了.如下图所示,默认的三维重建后的颜色. 这样的颜色显然不是 ...

  2. python 列表中[ ]中冒号‘:’的作用

    中括号[ ]:用于定义列表或引用列表.数组.字符串及元组中元素位置 list1 = [, ] list2 = [, , , , , , ] print ] print :]   冒号: 用于定义分片. ...

  3. 记录一个pom文件

    rt <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://m ...

  4. butterknife-gradle-plugin插件

    在android library项目里由于R类中变量不再是final类型而无法使用butterknife,为了解决此问题,Jakewharton大神引入了butterknife-gradle-plug ...

  5. 数据库根据id排序

    select * from 表名 order by id 根据 id 从小到大排序

  6. docker镜像保存及导出(save,export)

    前言:有时自己的做好的docker镜像,想将这个docker容器弄到其他服务器上去运行:或者已经运行的容器,将其弄导出,运行到其他地方进行测试 1.查看要要保存的镜像的ID docker  image ...

  7. 末学者笔记--shell编程上 2 玄

    Shell编程-变量及表达运算 [内容简列] 1. shell变量简介 2. 定义变量 3. 使用变量 4. 修改变量的值 5. 单引号和双引号的区别 6. 将命令的结果赋值给变量 7. 删除变量 8 ...

  8. springmvc 控制器 读取properties文件

    配置文件app.properties如下: yt.api.url=http://localhost:9000 springmvc.xml 增加配置: <context:property-plac ...

  9. C# BackJson Beautiful format

    using System; using System.Collections.Generic; using System.Linq; using System.Web;   public class ...

  10. zabbix企业级监控dell硬件服务状态

    监控dell服务的硬件状态,一般有两种方式 第一,在操作熊上安装OMSA,编写脚本调用omreport命令进行监控 第二.使用IDRAC,只需开启在IARAC上的SNMP,zabbix通过snmp进行 ...