项目中的权限管理怎么做

2020-08-18 19:10发布

5条回答
汽水味的小盆友
2021-09-23 10:02

1.了解基于资源的权限管理方式

2. 掌握权限数据模型

3. 掌握基于url的权限管理(不使用Shiro权限框架的情况下实现权限管理)

用户认证流程

关键对象

subject:主体,理解为用户,可能是程序,都要去访问系统的资源,系统需要对subject进行身份认证。

principal:身份信息,通常是唯一的,一个主体可以有多个身份信息,但是只能有一个主身份信息(primary  principal)。

credential:凭证信息,可以是密码、证书、指纹等。

总结:主体在进行身份认证时需要提供身份信息和凭证信息。

用户授权

用户授权概念

用户授权,简单理解为访问控制,在用户认证通过后,系统对用户访问资源进行控制,当用户具有资源的访问权限方可访问。

授权流程

其中橙色为授权流程

关键对象

授权的过程可以理解为  who  对 what(which) 进行how操作

who:主体,即subject,subject在认证通过后,系统进行访问控制。

what(which):资源(Resource) ,subject必须具备资源访问权限才可以访问该资源。资源包括很多方面比如:用户列表页面、商品修改菜单、商品id为001的商品信息。

资源分为资源类型和资源实例:

例如系统的用户信息就是资源类型,相当于Java类。

系统中id为001的用户就是资源实例,相当于new的Java对象。

how:权限/许可(permission),针对资源的权限或许可,subject必须具有permission方可访问资源,如何访问/操作需要定义permission,权限比如:用户添加、用户添加、商品删除。

权限模型

主体(账号、密码)

资源(资源名称,访问地址)

权限(权限名称、资源id)

角色(角色名称)

角色和权限关系(角色id、权限id)

如下图:

通常企业开发中将资源和权限合并为一张权限表,如下:

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

权限(权限名称、资源id)

合并为:

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

上图被称为权限管理的通用模型,不过在企业开发中根据系统自身特点还会对上图进行修改,但是用户、角色、权限、用户角色关系、角色权限关系是必不可少的。

分配权限

用户需要分配相应的权限才可以访问相应的资源。权限是对资源的操作许可。

通常给用户分配资源权限需要将权限信息持久化,比如存储在关系数据库中。

把用户信息、权限管理、用户分配的权限信息写入到数据库(权限数据模型)。


一周热门 更多>