九、Spring Boot集成Spring Security之授权概述
前言
本文介绍什么是授权,Spring Security的授权配置有哪些,配合以下内容观看效果更佳!!!
- 什么是授权,授权有哪些流程,Spring Security的授权配置有几种?请查看九、Spring Boot集成Spring Security之授权概述
- HTTP请求授权的实现原理是什么,如何配置HTTP请求授权?请查看十、Spring Boot集成Spring Security之HTTP请求授权
- 方法授权的实现原理是什么,如何配置方法授权?请查看十一、Spring Boot集成Spring Security之方法授权
- 如何实现基于RBAC模型的授权方式?请查看十二、Spring Boot集成Spring Security之基于RBAC模型的授权
一、授权概述
授权简单来说就是判断某个用户能不能访问某个接口,可以访问时授权成功,不能访问时授权失败;用户包括已登录的用户和未登录的用户即匿名用户,接口包括接口地址和接口的请求类型,接口对于系统使用者来说可以简单理解为菜单按钮。
目前最流行的权限模型是RBAC权限模型,这种模型的思想是将菜单/接口/权限按照完成某项任务的最小权限进行分组,分出来的组即为角色,再按照用户的职责授予相应的角色。其中菜单/接口/权限和角色之间为多对多的关系,即一项任务可能需要多个操作或者多项任务可能需要同一个操作;用户与角色之间也是多对多的关系,即一个用户可能需要完成多项任务或者不同用户可能需要完成相同的任务。
Spring Security的授权还包括对认证结果、接口请求参数、接口返回值等更细粒度的处理。
二、用户权限
Spring Security中用户的权限接口为GrantedAuthority,并提供默认实现SimpleGrantedAuthority,SimpleGrantedAuthority有一个String属性role,role用于判断用户是否允许访问接口。
在配置接口权限时还有两个权限的概念role(hasXxxRole)和authority(hasXxxAuthority),role和authority最终都会转化为SimpleGrantedAuthority的role属性,并和用户的权限作对比,以判断用户是否允许访问接口,唯一的区别是role转为SimpleGrantedAuthority的role属性时会默认添加ROLE_
前缀,而authority会直接转化为SimpleGrantedAuthority的role属性,即ROLE_{role}={authority}=simpleGrantedAuthority.role。
三、用户授权流程
- 认证时设置用户权限
- 授权时获取接口及其需要的权限
- 校验用户权限和接口权限是否有交集
- 有交集时校验成功调用接口
- 没有交集时校验失败抛出异常
三、Spring Security授权方式
1、请求级别授权
- 实现方式:过滤器
- 适用场景
- 基于URL的访问控制
- 统一的安全策略
- 简单地权限控制
2、方法级别授权
- 实现方式:AOP(拦截器)
- 适用场景
- 细粒度的访问控制
- 动态权限检查
- 基于业务逻辑的权限控制
九、Spring Boot集成Spring Security之授权概述的更多相关文章
- Spring Boot集成Spring Data Reids和Spring Session实现Session共享
首先,需要先集成Redis的支持,参考:http://www.cnblogs.com/EasonJim/p/7805665.html Spring Boot集成Spring Data Redis+Sp ...
- SpringBoot系列:Spring Boot集成Spring Cache,使用EhCache
前面的章节,讲解了Spring Boot集成Spring Cache,Spring Cache已经完成了多种Cache的实现,包括EhCache.RedisCache.ConcurrentMapCac ...
- SpringBoot系列:Spring Boot集成Spring Cache,使用RedisCache
前面的章节,讲解了Spring Boot集成Spring Cache,Spring Cache已经完成了多种Cache的实现,包括EhCache.RedisCache.ConcurrentMapCac ...
- Spring Boot 集成 Spring Security 实现权限认证模块
作者:王帅@CodeSheep 写在前面 关于 Spring Security Web系统的认证和权限模块也算是一个系统的基础设施了,几乎任何的互联网服务都会涉及到这方面的要求.在Java EE领 ...
- Spring boot 集成Spring Security
依赖jar <dependency> <groupId>org.springframework.cloud</groupId> <artifactId> ...
- Spring Boot 集成spring security4
项目GitHub地址 : https://github.com/FrameReserve/TrainingBoot Spring Boot (三)集成spring security,标记地址: htt ...
- Spring boot集成spring session实现session共享
最近使用spring boot开发一个系统,nginx做负载均衡分发请求到多个tomcat,此时访问页面会把请求分发到不同的服务器,session是存在服务器端,如果首次访问被分发到A服务器,那么se ...
- Spring Boot 集成 Spring Security
1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- Spring Boot 集成 Spring Security 入门案例教程
前言 本文作为入门级的DEMO,完全按照官网实例演示: 项目目录结构 Maven 依赖 <parent> <groupId>org.springframework.boot&l ...
- Spring Boot 集成 Spring Security 使用自定义的安全数据源
编写一个类自定义实现 UserDetailsService 接口 @Service("customUserDetailService") public class CustomUs ...
随机推荐
- DOM – Web Animation API
前言 以前写过相关的文章 angular2 学习笔记 ( animation 动画 ).但在项目种很少用到 Web Animation. 体会不到它的精髓,目前的感觉是,它对比 CSS Animati ...
- react-pdf预览在线PDF的使用
1.在react项目中安装react-pdf依赖包 建议安装8.0.2版本的react-pdf,如果安装更高版本的可能出现一些浏览器的兼容性问题: npm install react-pdf@8.0. ...
- Python—开发工具 PyCharm 使用
一.创建新工程: 第一个工程创建完毕!
- Java 动态编译工具 Janino 和 Liquor 差别
如果你只要 Java7 及以下的语法支持,建议 Janino.如果要你想更全的 Java8.Java11.Java17.Java21 等语法,可以选 Liquor. 1.它们相同的地方 提供的相似的能 ...
- Windows远程设置''不可复制''的权限
起因: 有一个技术部门的同事需要远程其他同学的电脑进行操作,但是不允许他复制目标电脑上的文件,避免造成资料外泄 解决办法: 组策略编辑器中,设置 计算机配置 -> 管理模板 -> wind ...
- Android系统之System Server大纲
前言 System Server是android 基本服务的提供者,是android系统运行的最基本需求,所有server运行在一个叫system_process的进程中,system_process ...
- Android :安卓学习笔记之 Handler机制 的简单理解和使用
目录 Handler机制 1.Handler使用的引出 2.背景和定义 3.作用和意义 4.主要参数 5.工作原理及流程 5.1.对应关系 6.深入分析 Handler机制源码 6.1.Handler ...
- 如何对 Vue 首屏加载实现优化 ?
首屏加载优化是对于 SPA 来说的 ,首次加载所有的 html css js 所需的文件 ,后面就不会因为用户对页面的操作而跳转页面 ,没有跳转页面如何展示不同的内容呢 ? 使用 Vue 的路由机制 ...
- kotlin更多语言结构——>This表达式
This表达式 为了表示当前的 接收者 我们使用 this 表达式: - 在类的成员中,this指的是该类的当前对象. - 在扩展函数或者带有接收者的函数字面值中,this 表示在点左侧传递的 接收者 ...
- day01-markdown学习
markdown学习 标题 两个#号 三级标题 四级标题 字体 hello world!两个*加粗 hello world!一个*斜体 hello world!三个*斜体加粗 hello world! ...