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框架
相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
目录
相关文章
|
5月前
|
监控 安全 Java
老程序员分享:JeeSite快速开发平台、功能介绍、用户权限、数据权限、系统管理
老程序员分享:JeeSite快速开发平台、功能介绍、用户权限、数据权限、系统管理
176 0
|
5月前
|
数据安全/隐私保护
杨校老师课堂之权限管理系统的核心业务逻辑接口设计
杨校老师课堂之权限管理系统的核心业务逻辑接口设计
30 0
|
6月前
|
运维 监控 Unix
【专栏】Linux系统管理员面试中的常见问题,涵盖基础知识、系统管理和故障排查。
【4月更文挑战第28天】本文概述了Linux系统管理员面试中的常见问题,涵盖基础知识、系统管理和故障排查。面试官会询问Linux与Unix的关系、内核功能、文件系统类型、权限位、用户组概念、链接类型、输入输出、进程和环境变量等。此外,还会涉及软件安装、服务配置、日志监控、网络管理、防火墙配置、LVM、RAID、用户管理、备份策略等实践技能。故障排查和脚本编程能力也是重点,包括系统故障分析、脚本在系统管理中的应用、磁盘空间管理、服务故障诊断及性能优化。准备面试的求职者应注重理论与实践经验的结合,持续学习以提升专业能力。
53 0
|
6月前
|
存储 缓存 前端开发
中高级前端工程师都需要熟悉的技能--前端缓存
中高级前端工程师都需要熟悉的技能--前端缓存
|
存储 缓存 编解码
Web开发中的图片管理:策略与实践
1. 图片优化 图片优化是网站性能优化中的重要一环,这涉及到多个方面,包括减少文件大小,选择正确的图片格式,实现响应式图片,以及考虑图片的懒加载或预加载。
404 0
|
JSON NoSQL 前端开发
面试:第十章:单点登录
面试:第十章:单点登录
123 0
面试:第十章:单点登录
|
运维 小程序
全栈工程师之路-中级篇之小程序开发-第一章第一节注册小程序
全栈工程师之路-中级篇之小程序开发-第一章第一节注册小程序
131 1
全栈工程师之路-中级篇之小程序开发-第一章第一节注册小程序
|
存储 缓存 小程序
全栈工程师之路-中级篇之小程序开发-第一章第二节注册小程序和开发工具讲解
全栈工程师之路-中级篇之小程序开发-第一章第二节注册小程序和开发工具讲解
149 0
全栈工程师之路-中级篇之小程序开发-第一章第二节注册小程序和开发工具讲解
好好编程-物流项目14【授权管理-shiro实现】
本项目中我们的权限就只涉及到角色,没有再细粒度到菜单,感兴趣的可以自己可扩展实现下。
好好编程-物流项目14【授权管理-shiro实现】
|
Web App开发 前端开发 JavaScript
【前端第一课】前端的基本概念;安装各类开发软件;git使用方法
【前端第一课】前端的基本概念;安装各类开发软件;git使用方法
下一篇
无影云桌面