\day01_shiro\0323\10realm支持散列.avi;
\day01_shiro\0323\1权限管理原理.avi;
\day01_shiro\0323\2权限管理解决方案.avi;
\day01_shiro\0323\3基于url拦截-开发框架搭建.avi;
\day01_shiro\0323\4基于url拦截-用户认证实现.avi;
\day01_shiro\0323\5基于url拦截-用户授权实现.avi;
\day01_shiro\0323\6shiro的介绍.avi;
\day01_shiro\0323\7shiro认证入门程序.avi;
\day01_shiro\0323\8shiro认证流程.avi;
\day01_shiro\0323\9自定义realm实现认证.avi;
\day01_shiro\0323\源代码\permission6666660\WebRoot\images\px;
\day01_shiro\案例\permission(基于url授权工程)\WebRoot\images\px;
\day02_shiro第二天\0325\10shiro整合开发-验证码实现.avi;
\day02_shiro第二天\0325\11shiro整合开发-记住我.avi;
\day02_shiro第二天\0325\1shiro授权入门程序.avi;
\day02_shiro第二天\0325\2自定义realm进行授权.avi;
\day02_shiro第二天\0325\3shiro整合开发-applicationContext-shiro.avi;
\day02_shiro第二天\0325\4shiro整合开发-登陆和退出.avi;
\day02_shiro第二天\0325\5shiro整合开发-realm查询完整认证在页面展示.avi;
\day02_shiro第二天\0325\6shiro整合开发-realm授权.avi;
\day02_shiro第二天\0325\7shiro整合开发-认证连接数据库.avi;
\day02_shiro第二天\0325\8shiro整合开发-授权连接数据库.avi;
\day02_shiro第二天\0325\9shiro整合开发-缓存.avi;
\day02_shiro第二天\0325\源代码\permission6666660\WebRoot\images\px;
\day02_shiro第二天\0325\源代码\permission_shiro6666660\WebRoot\images\px;

《shiro\day01_shiro\0323\1权限管理原理.avi》

视频中39分 时 提到权限和资源是多对一,不是很理解。

====================

1.1
什么是权限管理

基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照
安全规则或者
安全策略
控制
用户可以访问而且只能访问自己被授权的
资源

权限管理包括用户身份认证和授权两部分,简称认证授权。对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。

1.2
用户身份认证

1.2.1
概念

身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。
对于采用
指纹
等系统,则出示指纹;对于硬件
Key
等刷卡系统,则需要刷卡。

1.2.2
用户名密码身份认证流程

1.2.3
关键对象

上边的流程图中需要理解以下关键对象:

n
Subject
:主体

访问系统的用户,主体可以是用户、程序等,进行认证的都称为主体;

n
Principal
:身份信息

是主体(
subject
)进行身份认证的标识,标识必须具有唯一性,如用户名、手机号、邮箱地址等,一个主体可以有多个身份,但是必须有一个主身份(
Primary
Principal
)。

n
credential
:凭证信息

是只有主体自己知道的安全信息,如密码、证书等。

1.3
授权

1.3.1
概念

授权,即访问控制,控制谁能访问哪些资源。主体进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访问的。

1.3.2
授权流程

下图中橙色为授权流程。

1.3.3
关键对象

授权可简单理解为
who对what(which)进行How操作:

n Who,即主体

Subject),主体需要访问系统中的资源。

n What,即资源(Resource),如系统菜单、页面、按钮、类方法
、系统商品信息等。资源包括资源类型和资源实例,比如商品信息为资源类型,

类型为
t01的
商品
为资源实例,编号为
001的商品信息也属于资源实例。

n How,权限/许可(Permission),规定了主体对资源的操作
许可
,权限离开资源没有意义,如用户查询权限、用户添加权限、某个类方法

的调用权限、编号为
001用户的修改权限等,通过权限可知主体对哪些资源都有哪些操作许可。

权限分为粗颗粒和细颗粒,粗颗粒权限是指对资源类型的权限,细颗粒权限是对资源实例的权限。

主体、资源、权限关系如下图:

1
权限管理解决方案

1.1
粗颗粒度和细颗粒度

1.1.1
什么是粗颗粒度和细颗粒度


资源类型
的管理称为
粗颗粒度
权限管理,即只控制到菜单、按钮、方法,粗粒度的例子比如:用户具有用户管理的权限,具有导出订单明细的权限。


资源实例
的控制称为
细颗粒度
权限管理,即控制到数据级别的权限,比如:用户只允许修改本部门的员工信息,用户只允许导出自己创建的订单明细。

1.1.2
如何实现粗颗粒度和细颗粒度

对于粗颗粒度
的权限管理可以很
容易做系统架构级别的功能
,即系统功能操作使用统一的粗颗粒度的权限管理。

对于细颗粒度
的权限管理不建议做成系统架构级别的功能,
因为
对数据级别的控制是系统的业务需求,随着业务需求的变更业务功能变化的可能性很大,

建议
对数据级别的权限控制在业务层个性化开发
,比如:用户只允许修改自己创建的商品信息可以在

service
接口添加校验实现,

service
接口需要传入当前操作人的标识,与商品信息创建人标识对比,不一致则不允许修改商品信息。

建议细粒度权限管理在业务层去控制。

比如:部门经理只查询本部门员工信息,在
service
接口提供一个部门
id
的参数,
controller
中根据当前用户的信息得到该 用户属于哪个部门,

调用
service
时将部门
id
传入
service
,实现该用户只查询本部门的员工。

1.2
基于
url
拦截

基于
url
拦截是企业中常用的权限管理方法,实现思路是:将系统操作的每个
url
配置在权限表中,将权限对应到角色,将角色分配给用户,

用户访问系统功能通过
Filter
进行过虑,过虑器获取到用户访问的
url
,只要访问的
url
是用户分配角色中的
url
则放行继续访问。

如下图:

1.3
使用权限管理框架

对于权限管理基本上每个系统都有,使用权限管理框架完成权限管理功能的开发可以节省系统开发时间,并且权限管理框架提供了完善的认证

和授权功能有利于系统扩展维护,但是学习权限管理框架是需要成本的,所以选择一款简单高效的权限管理框架显得非常重要。

标签: none

添加新评论