spring oAuth2.0

news2024/11/16 11:48:30
  • 会话
    用户认证通过后,为了避免用户的每次操作都进行认证可将用户的信息保证在会话中。会话就是系统为了保持当前用户的登录状态所提供的机制,常见的有基于session方式,基于token方式等。
    基于session的认证方式:
    用户认证成功后,在服务端生成用户相关的数据保存在session(当前会话)中,发给客户端的session_id存放到cookie中,这样用户客户端请求时带上session_id就可以验证服务器端是否存在session数据,以此完成用户的合法校验,当前用户退出系统或session过期销毁时,客户端的session_id也就无效了
    基于session的认证机制由servelt规范制定,Servlet容器已实现,用户通过HttpSession的操作方法即可实现,如下是HttpSession的相关的API
    HttpSession getSession(Boolean create) 获取当前httpsession对象
    void setAttribute(String name,Object value) 向session中存放对象
    object getAttribute(String name) 从session中获取对象
    void removeAttribute(String name) 移除session中的对象
    void invalidate() 使HttpSession失效

基于token的认证方式:
用户认证成功后,服务端生成一个token发给客户端,客户端可以放到cookie或localStorage等存储中,每次请求时带上token,服务端接收到token通过验证后即可确认用户身份

  • 授权的数据模型
    授权可以简单理解为Who对What(Which)进行How操作,包括如下:
    Who,即主体(Subject),主体一般是指用户,也可以是程序,需要访问系统中的资源
    What,即资源(Resource),如系统菜单、页面、按钮、代码方法、系统商品信息、系统订单信息等。系统菜单,页面、按钮、代码方法都属于系统功能资源,对于web系统每个功能资源通常对应一个url;系统商品信息、系统订单信息都属于实体资源(数据资源),实体资源由资源类型和资源实例组成,比如商品信息为资源类型,商品编号为001的商品为资源实例
    How,权限/许可(Permission),规定了用户对资源的操作许可,权限离开了资源没有意义。如用户查询权限,用户添加权限,某个代码方法的调用权限,编号为001的用户的修改权限等,通过权限可知用户对哪些资源都有哪些操作许可。

主体(用户id,账号,密码、…)
资源(资源id,资源名称、访问地址。。。。。)
权限(权限id,权限标识,权限名称,资源id)
角色(角色id,角色名称。。。)
角色和权限的关系(角色id,权限id)
主体(用户)和角色的关系(用户id,角色id,。。。。)在这里插入图片描述

通常企业开发中将资源和权限合并为一张权限表:
资源(资源id,资源名称,访问地址、…)
权限(权限id、权限标识、权限名称、资源id…)
合并为
权限(权限id,权限标识,权限名称,资源名称,资源访问地址)
在这里插入图片描述

RBAC:
1、基于角色的访问控制(Role-Based Access Control)是按角色进行授权,比如:主体的角色为总经历可以查询运行报表,查询员工工资信息,访问控制流程如下:
在这里插入图片描述
根据上图中的判断逻辑,授权代码可以标识如下:

if(主体.hasRole("总经历角色id")){
查询工资
}

如果上图中查询工资所需要的角色变化为总经理和部门经理,此时就需要修改判断逻辑为“判断用户的角色是否是总经历或部门经历”,修改代码如下:

if(主体.hasRole("总经理角色id") || 主体.hasRole("部门经历角色id")){
	查询工资
}

2、基于资源的访问控制
基于资源的访问控制是按资源或权限进行授权,比如:用户必须具有查询工资权限才可以查询员工工资信息等,访问控制流程如下:
在这里插入图片描述

if(主体.hasPermission("查询工资权限标识")){
		查询工资
}
	```

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

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

相关文章

Qt扫盲-QSS帮助手册使用

QSS帮助手册使用一、概述1. 查找 Qt Style Sheets Reference2. 收藏一下二、Qt Assistant 查阅帮助1. List of Stylable Widgets2. List of Properties3. List of Icons4. List of Property Types5. List of Pseudo-States6. List of Sub-Controls一、概述 导言:这…

基于信创运维平台,实现国产化网络自动巡检

近年来,以工业互联网、大数据、人工智能、5G技术等为代表的新一代信息技术飞速发展,推动国内企业向数字化经济的变革,数字化变成一股不可逆转的潮流,也是增强企业竞争力的关键所在。北京智和信通积极探索,把握新一轮数…

Pytorch模型转成onnx并可视化

文章目录转换模型前提转换方法模型可视化可能出现的报错信息ValueError: torch.nn.DataParallel is not supported by ONNX exporter, please use attribute module to unwrap model from torch.nn.DataParallel. Try torch.onnx.export(model.module, ...)RuntimeError: ONNX …

流媒体基础-RTP封装PS流

PS流格式 首条数据结构: RTP Header + PS Header +(System Header + PSM)+ PES(Header + Payload) 非首条数据结构: RTP Header + PS Header + PES(Header + Payload) 接下来记录侧重于找到 H.264 数据,所以会跳过一些暂时不关心的内容。 PS流有一个结束码 MPEG_progr…

信息学奥赛一本通 1916:【01NOIP普及组】求先序排列 | 洛谷 P1030 [NOIP2001 普及组] 求先序排列

【题目链接】 ybt 1916:【01NOIP普及组】求先序排列 洛谷 P1030 [NOIP2001 普及组] 求先序排列 【题目考点】 1. 二叉树 【解题思路】 已知中序、后序遍历序列,构建二叉树,而后对该二叉树做先序遍历,得到先序遍历序列。 该题…

质性分析软件nvivo的学习(二)

0、前言: 这部分内容是,质性分析软件nvivo的学习(一)的衔接内容,建议看完:质性分析软件nvivo的学习(一)再看这部分内容。这里的笔记都是以nvivo12作为学习案例的,其实不…

JVM垃圾回收的并行与并发

文章目录学习资料垃圾回收的并行与并发并发(Concurrent)并行(Parallel)并发 vs 并行总结学习资料 【尚硅谷宋红康JVM全套教程(详解java虚拟机)】 【阿里巴巴Java开发手册】https://www.w3cschool.cn/aliba…

RHCEansible 任务模块

文件操作模块 file模块 ansible-doc file -s path参数 :必须参数,用于指定要操作的文件或目录,在之前版本的ansible中,使用dest参数或者name参数指定要操作的文件或目录,为了兼容之前的版本,使用dest或n…

STM32的升级--ICP/ISP/IAP以及Ymodem协议分析

ICP/ISP/IAP 区别 ICP(In-Circuit Programing): 通过J-Link/SWD等下载器烧写程序,上位机需要借助其他硬件的参与才能更新固件,可以更新MCU的所有存储区域; ISP(In-System Programing): 通过MCU出厂时固化的一个bootloader升级程序&#xff0…

重点算法排序之快速排序、归并排序(上篇)

文章目录 一、排序的概念及常见的排序算法 二、快速排序的思想及代码详解 2、1 快速排序的思想 2、2 挖坑法 2、2、1 挖坑法实现思想 2、2、2 挖坑法举例 2、2、3 挖坑法代码实现 2、3 左右指针法 2、3、1 左右指针法实现思想 2、3、2 左右指针法举例 2、3、3 左右指针法代码…

类的成员之四:代码块

文章目录一、代码块静态代码块非静态代码块注意总结:由父及子,静态先行属性赋值总结一、代码块 1、代码块的作用:用来初始化类、对象 2、代码块如果有修饰的话,只能使用static 3、分类:静态代码块 vs 非静态代码块 静…

Ubuntu自动登录脚本

Ubuntu自动登录脚本一、!/usr/bin/expect -f的意义二、spawn命令行:三、send命令:四、expect五、interact命令:本人用xshell的SSH登录云服务器,需要从用户Ubuntu切换到root,再切换到lighthouse。编辑了一个自动切换用户…

2-1进程管理-进程与线程

文章目录1.进程2.进程控制块(PCB)3.进程的状态与转换4.进程通信8.线程9.线程和进程的比较10.线程的实现方式11.多线程模型20.线程的状态与转换1.进程 (1)进程是程序的一次执行过程 (2)进程是进程实体的运行…

JavaScript篇.day09-数据类型,表达式,运算符,作用域,语句,严格模式

目录1.数据类型(1)原始数据类型(2)隐式转换(3)逻辑语句中的类型转换(4)数据类型检测2.表达式3.运算符(1)分类(2)其他4.作用域5.语句6.严格模式1.数据类型(1)原始数据类型number, string, boolean, null, undefined, object object对象包含: Array, Function, Date...function f…

【微服务笔记03】微服务组件之Eureka注册中心高可用集群环境搭建

这篇文章,主要介绍微服务组件之Eureka注册中心高可用集群环境搭建。 目录 一、Eureka集群环境 二、搭建Eureka高可用集群环境 2.1、前提准备 (1)修改hosts配置文件 (2)创建父工程项目 2.2、搭建Eureka注册中心 …

数据可视化大屏Echarts高级开发散点图实战案例分析(地图扩展插件bmap.min.js、散点图、百度地图控件、柱图、涟漪动图、条件判断颜色)

系列文章目录 燃,拿来即用!Echarts动态排名柱状图(自适应电脑和手机端)漏刻有时数据可视化Echarts组件开发(27):盒须图(箱线图)前后端php交互的实战案例漏刻有时数据可视化Echarts组件开发(26):全国地图三级热力图下钻和对接api自动调用数据…

高压功率放大器在高校实验室的实际应用领域介绍

功率放大器的应用领域是很多电子工程师都关心的问题,那么功率放大器的使用场景又有哪些呢,下面来介绍一下安泰高压功率放大器在各个高校的实际应用情况。 图:激光切割 一、ATA-1000系列宽带功率放大器 应用领域:激光切割 适用高校…

Power BI 可视化修改配色

示例数据: 一、Power BI 按列排序 当把文本字段放在坐标轴,显示的顺序都乱了,完全不是自己想要的,就像下图所示: 默认按照Y轴的数值降序排序,如果选择按照month 以升序排序,就会如下所示&am…

【CDP】CDP集群如何通过Cloudera Manager配置使用SNMP方式转发告警

前言 这篇文章参考了大神的文章,如何在CDH平台上集成SNMP服务,然后实现了CDP集群集成SNMP服务,这里描述下,如何集成步骤,在CDP集群中告警是一个很重要的信息,最直观的衡量一个集群的健康状况,那…

[深度学习] 基于切片辅助超推理库SAHI优化小目标识别

对象检测是迄今为止计算机视觉中最重要的应用领域。然而,小物体的检测和大图像的推理仍然是实际使用中的主要问题,这是因为小目标物体有效特征少,覆盖范围少。小目标物体的定义通常有两种方式。一种是绝对尺度定义,即以物体的像素…