Spring Security——10,其他权限校验方法

其他权限校验方法

    • 一、hasAnyAuthority方法
    • 二、hasRole方法
    • 三、hasAnyRole方法
    • 一键三连有没有捏~~

前面都是使用@PreAuthorize注解,然后在在其中使用的是hasAuthority方法进行校验。

SpringSecurity还为我们提供了其它方法例如:hasAnyAuthority,hasRole,hasAnyRole等。

这里我们先不急着去介绍这些方法,我们先去理解hasAuthority的原理,然后再去学习其他方法你就更

容易理解,而不是死记硬背区别。并且我们也可以选择定义校验方法,实现我们自己的校验逻辑。

hasAuthority方法实际是执行到了SecurityExpressionRoot的hasAuthority,大家只要断点调试既可知道它内部的校验原理。

它内部其实是调用authentication的getAuthorities方法获取用户的权限列表。然后判断我们存入的方法参数数据在权限列表中。

一、hasAnyAuthority方法

hasAnyAuthority方法可以传入多个权限,只有用户有其中任意一个权限都可以访问对应资源。

@PreAuthorize("hasAnyAuthority('admin','test','system:dept:list')")
public String hello(){return "hello";	
}

二、hasRole方法

hasRole要求有对应的角色才可以访问,但是它内部会把我们传入的参数拼接上 ROLE_ 后再去比较。所

以这种情况下要用用户对应的权限也要有 ROLE_ 这个前缀才可以。

@PreAuthorize("hasRole('system:dept:list')")
public String hello(){return "hello";
}

三、hasAnyRole方法

hasAnyRole 有任意的角色就可以访问。它内部也会把我们传入的参数拼接上 ROLE_ 后再去比较。所以

这种情况下要用用户对应的权限也要有 ROLE_ 这个前缀才可以。

@PreAuthorize("hasAnyRole('admin','system:dept:list')")
public String hello(){return "hello";
}

一键三连有没有捏~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/798198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Steam上线真人乙游,女性玩家还愿意买单吗?

Steam上线了一款真人乙游《糟糕!他们太爱我了怎么办?》(以下简称《糟糕!)。 乍一听这个游戏名,似乎和《完蛋!我被美女包围了!》有异曲同工之妙,事实也确实如此&#xff…

data-diff,一个超强的 Python 库!

目录 前言 安装 特性 基本功能 字典比较 列表比较 集合比较 嵌套数据结构比较 高级功能 比较忽略特定字段 自定义差异显示 数据快照比较 实际应用场景 数据监测和审计 配置管理 测试验证 总结 前言 大家好,今天为大家分享一个超强的 Python 库 - data-diff …

2024使用VMware® Workstation 17 Pro部署Ubuntu22.04

官网下载镜像 https://ubuntu.com/download/server,配置好vmware的NAT网络。 常用设置 # root用户登录设置,用 sudo 也一样。 sudo passwd root vi /etc/ssh/sshd_config systemctl restart sshdVMware的网络问题 # 遇到的问题 # 1.明明显示已经连上…

挑战30天C++基本入门(DAY8--树)[part 3](速通哦~)

#上一章我们把搜索二叉树的知识给传授完毕,如果认真的看下去并且手打了几遍,基本上内部的逻辑还是可以理解的,那我们现在就截至继续学习树的一些重要知识啦~~ 树高怎么求呀?如果用上一次学的层次遍历来求树高,有点小题…

SeLinux安全上下文文件

在SeLinux 框架中,需要为每个主体和客体设置好安全上下文。在Android中,常见的安全上下文文件有file_contexts、genfs_contexts、service_contexts、mac_permissions.xml和seapp_contexts file_contexts 根系统中所有文件的安全上下文, 如/…

Redis分布式锁的实现核心思路

4.2 、Redis分布式锁的实现核心思路 实现分布式锁时需要实现的两个基本方法: 获取锁: 互斥:确保只能有一个线程获取锁非阻塞:尝试一次,成功返回true,失败返回false 释放锁: 手动释放超时释放&…

面试篇:杂乱篇

String s " "; 1. String类的常用方法有哪些? s.length(): 返回字符串长度s.substring(): 截取字符串s.split(): 分割字符串s.equlas(): 字符串比…

ubuntu18.04-arm7v架构下构建Telegraf自定义系统服务

ubuntu18.04-arm7v架构下构建Telegraf自定义系统服务 通过交叉编译后的Telegraf可执行文件使用nohup启动后,在系统重启时,有时候会忘记再把它启动起来。这个时候我们就可以将其定义成系统服务,让系统来帮忙管理。 创建telegraf.service文件 …

Chapter 1 Basic Concepts of Communication and Communication Systems

1.1 The Concept of Communication communication【通信】:It is the process of using signals to transmit messages containing information in space. To put it simply, communication is the spatial transmission of information【信息的空间传递】Information【信息】…

linux CentOS7配置docker的yum源并安装

[TOC](这里写目录标题 配置yum源Docker的自动化安装一些其他启动相关的命令: 配置yum源 使用以下命令下载CentOS官方的yum源文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 清除yum缓存 yum clean all 更新yum缓存…

上升Chrome安装Vue插件vue-devtools

Chrome安装Vue插件vue-devtools的步骤如下: 打开Chrome浏览器,点击地址栏右侧的三个点图标,选择“更多工具”->“扩展程序”。在打开的扩展程序页面,点击右上角的“打开Chrome网上应用店”。在Chrome网上应用店中搜索“Vue De…

【JavaWeb】Day35.MySQL概述——数据库设计-DDL(二)

表操作 关于表结构的操作也是包含四个部分:创建表、查询表、修改表、删除表。 1.创建 语法 create table 表名( 字段1 字段1类型 [约束] [comment 字段1注释 ], 字段2 字段2类型 [约束] [comment 字段2注释 ], ...... 字段n 字段n类型 [约束] [comment …

藏不住了!这20个技术点是运维老手的秘密武器

你们好,我的网工朋友。 信息技术系统的正常运行直接关系到企业或生产的正常运行。 然而,网工经常面临以下问题:网络速度慢、设备故障和应用系统效率低。 任何信息技术系统的故障,如果不及时处理,都会产生很大的影响…

@RequestBody与@RequestParam的区别

RequestBody会将请求体中的数据,转换成对象 RequestParam会从http请求查询参数中提取数据 RequestParam和RequestBody是Spring Framework中用于处理HTTP请求的注解,它们有以下区别: 1.数据来源: RequestParam: 从HTTP请求的查询参数中提取…

P2089 烤鸡、P1706 全排列问题、P1157 组合的输出、P1036 [NOIP2002 普及组] 选数——Python代码实现(带注释)

P2089 烤鸡 题目背景 猪猪 Hanke 得到了一只鸡。 题目描述 猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 1010 种配料(芥末、孜然等&#xf…

【优选算法专栏】专题十六:BFS解决最短路问题(一)

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…

万得AI算法工程师一面面试题6道|含解析

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 今天…

缓存、分布式缓存、缓存的风险

为系统引入缓存的理由 在软件的开发中,引入缓存的负面作用明显大于硬件的缓存。主要由以下几个方面 从开发者角度来说引入缓存会提高系统的复杂度,因为你需要考虑缓存的失效、更新、一致性等问题(硬件缓存也存在这些问题,只是不需…

串口和 蓝牙模块HC08

串口基本认知 串行接口简称串口,也称 串行通信 接口或 串行通讯接口 (通常指 COM 接口 ),是采用串行通信方 式的 扩展接口 。串行 接口(Serial Interface )是指数据一位一位地顺序传送。其特点是 通信线路…

【LangChain学习之旅】—(16)检索增强生成:通过RAG助力大模型

【LangChain学习之旅】—(16)检索增强生成:通过RAG助力大模型 RAG 的工作原理文档加载文本转换文本分割器文本嵌入存储嵌入缓存存储向量数据库(向量存储)数据检索向量存储检索器各种类型的检索器索引总结什么是 RAG?其全称为 Retrieval-Augmented Generation,即检索增强…