shrio教程初级(一)权限管理基础(必学)

简介: 一、前言什么权限管理,我认为大概包括用户认证与用户授权。只要用用户的系统,都会存在权限管理。

一、前言

什么权限管理,我认为大概包括用户认证与用户授权。只要用用户的系统,都会存在权限管理。

二、权限管理基础

2.1用户认证

首先不管你做没有做过权限管理,如下图你也是熟悉的。

这个图的流程很简单,很直观的看到权限认证的流程走向。那么上图中存在哪些关键的东西,我们来总结一下。
subject:主体      就是系统用户,这个用户可以是真正的人,也可以是程序。上图为登录用户(主人)。
principal:身份信息     就是主体的身份标志,身份信息是一对多关系。上图你可以是群主,也是尊贵的QQ会员(身份体现)。
credential:凭证信息   只要主体知道,或者主体提供的信息。例如我们的身份证凭证。上图为登录密码(身份证硬件)。

2.2用户授权

如图为用户授权流程,简单明了。

看图说话:用户认证通过之后,接下来就是 主体subject访问 资源resource的时候,这个时候就需要验证权限 身份principal。如果拥有 凭证credential就可以访问。注意到多一个红色词语,就是资源resource,授权就是对资源进行授权的过程。
如果硬要按照语文课的六要素的话可以划分如下:谁+做+什么

who:主体subject。主体需要访问系统中的资源 -----------谁

what:资源resource。如系统菜单、页面、按钮、类方法、系统商品信息等。 资源包括资源类型和资源实例,比如商品信息为资源类型,类型为t01的商品为资源实例,编号为   001的商品信息也属于资源实例 ----------什么

how:许可permission 规定了主体对资源的操作许可,权限离开资源没有意义,如用户查询权限、用户添加权限、某个类方法的调用权限、编号为001用户的修改权限等,通过  权限可知主体对哪些资源都有哪些操作许可。 权限分为粗颗粒和细颗粒,粗颗粒权限是指对资源类型的权限,细颗粒权限是对资源实例的权限 -----------做
如图为资源类型与资源实例权限。仔细品味


三、简易权限模型

简易模式包括:
1、主体:(账户、密码)
2、资源:(资源名称、资源访问地址)
3、权限:(权限名称、资源id)
4、角色:(角色名称)
5、角色权限关系:(角色id、权限id)
6、主体角色关系:(主体id、角色id)
可以建立如下数据表搭建模型:
或者:

2、3合并为资源权限:

权限(权限名称、资源名称、资源访问地址)


四、权限控制

了解了用户认证、用户授权、权限模型之后,我们来看看 权限控制,就是我们上面我们看到的判断。

4.1基于角色控制权限

RBAC基于角色的访问控制(Role-Based Access Control是以角色为中心进行访问控制

例如:

if(主体.hasRole("总经理角色id")){

查询工资

}

缺陷:如果懂事长秘书也有查询工资的权限呢??如下

if(主体.hasRole("总经理角色id")||主体.hasRole("懂事长秘书角色id")){

查询工资

}

所有这种我们一般不建议!!!

4.2基于资源控制权限

RBAC基于资源的访问控制(Resource-Based Access Control是以资源为中心进行访问控制

例如:

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

查询工资

}

优点:系统设计时定义好查询工资的权限标识,即使查询工资所需要的角色变化为总经理和部门经理也只需要将“查询工资信息权限”添加到“部门经理角色”的权限列表中,判断逻辑不用修改,系统可扩展性强。


五、总结
这一篇我注意讲解了,一些基础模型,即使你用任何权限工具或者自己写权限框架也可以用到。接下来,我活就权限解决方案等一系列方式,我采用shrio框架
相关实践学习
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
目录
相关文章
|
9月前
项目实战8—用户成为设计者
项目实战8—用户成为设计者
39 0
|
9月前
|
存储 缓存 编解码
Web开发中的图片管理:策略与实践
1. 图片优化 图片优化是网站性能优化中的重要一环,这涉及到多个方面,包括减少文件大小,选择正确的图片格式,实现响应式图片,以及考虑图片的懒加载或预加载。
206 0
|
12月前
|
监控 安全 前端开发
权限系统就该这么设计,yyds
权限系统就该这么设计,yyds
|
druid Java 数据库连接
Javaweb项目案例:一个简单的用户管理系统实现
1.项目背景 我们来设计一个简单的用户管理系统,具有查看用户,添加用户,删除用户,更新用户的所有功能,并能支持分页显示,以及通过关键词模糊查询的🎈 本项目采用Druid数据库连接池 注意:JDBC和DAO部分本文不予演示,请自行完成此部分代码的编写🛍️
175 0
Javaweb项目案例:一个简单的用户管理系统实现
个人若依框架学习大杂烩
个人若依框架学习大杂烩
109 0
|
存储
FastAPI(六十八)实战开发《在线课程学习系统》接口开发--用户 个人信息接口开发
FastAPI(六十八)实战开发《在线课程学习系统》接口开发--用户 个人信息接口开发
|
Web App开发 前端开发 JavaScript
【前端第一课】前端的基本概念;安装各类开发软件;git使用方法
【前端第一课】前端的基本概念;安装各类开发软件;git使用方法
|
存储 NoSQL Redis
FastAPI(六十九)实战开发《在线课程学习系统》接口开发--修改密码
FastAPI(六十九)实战开发《在线课程学习系统》接口开发--修改密码
|
NoSQL Redis 数据库
FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发
FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发
|
存储 前端开发 架构师
入职Apifox研发组三个月,我领悟了30个高效开发方法🔥
入职Apifox研发组三个月,我领悟了30个高效开发方法🔥