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. iview 非 template/render 标签转换

    在 非 template/render情形下使用 iview,发现除了官方的一些需要注意的点外,还有一些其他需要注意的,这里记录下,防踩坑: 官方说明: 在非 template/render 模式下( ...

  2. NBIoT三种部署方式【转】

    转自:https://472880.kuaizhan.com/89/34/p441944286fccf2 本文作者:吴老司撩通信 本文来源:EETOP NB-IoT支持在频段内(In-Band).保护 ...

  3. 【easy】746. Min Cost Climbing Stairs 动态规划

    On a staircase, the i-th step has some non-negative cost cost[i]assigned (0 indexed). Once you pay t ...

  4. aptitude与apt-get

    aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具.与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些.举例来说,aptitud ...

  5. form表单老忘的

    禁止拉伸 textarea{ resize:none; } 左侧 label 对齐注意事项 必须要和 label-width 共同使用,才会生效. 表单域标签的宽度,直接写入 Form, 子元素 fo ...

  6. 启动Eclipse发生错误:An internal error occurred during: "Initializing Java Tooling".

    问题描述   由于上一次关闭 Eclipse 时没有正常关闭,再次启动 Eclipse 时报错:An internal error occurred during: "Initializin ...

  7. nginx 10054报错问题解决方案

    使用nginx代理,端口8000.tomcat用于后端服务器,端口8080.nginx的error.log中报如下错误: 2018/09/21 09:08:06 [error] 12488#11600 ...

  8. openssl私钥转换为PKCS8

    先装openssl 原来 -----BEGIN DSA PRIVATE KEY----- 转换后 -----BEGIN PRIVATE KEY----- openssl pkcs8 -topk8 -i ...

  9. [NOI2018]你的名字

    题解: 前68分非常简单 建立SAM 另一个串在上面跑,然后求一个树链的并 我们会发现暴力就是min(l^2,n)的 所以复杂度最多是nsqrt(n)的 当然我们也可以nlogn维护 把所有点按照df ...

  10. SQL反模式学习笔记1 开篇

    什么是“反模式” 反模式是一种试图解决问题的方法,但通常会同时引发别的问题. 反模式分类 (1)逻辑数据库设计反模式 在开始编码之前,需要决定数据库中存储什么信息以及最佳的数据组织方式和内在关联方式. ...