基于Plan的权限方案设计

一. Plan的结构组成

权限Plan是基于构造出来的系统结构,基于系统模板,构造出一个个不同的权限Plan,具体的Plan构造方式如下。

二. Plan数据结构设计

为了有结构的保存用户Plan权限,我们需要一张单独的数据表,这张数据表主要包括以下几个字段:

  1. id : 序号
  2. plan_name: paln名称
  3. plan_json : 基于系统目录结构构造的Plan json,用于web端或其他来展示。
  4. ids : 操作单元的ids,用来判断用户权限。

数据结构样例解析如下:

为了方便前端展示,我们把plan的数据结构分为两种模式存储,json的格式大致为
{“系统”:{“一级目录1”:{“二级目录1”:[“功能1”]},”一级目录2”:{“二级目录2”:[“功能2”]}}}

为了方便api对于权限进行判断,我们对plan所拥有的api权限,使用操作单元的ids进行存储,这层可用来对于用户权限快速查询.

这部分功能单元部分 还需要把下属的操作单元ids包括进来,把权限力度降到最低。

三. Plan相关功能包

上面阐述了Plan相关的数据结构设计,在相关的数据结构基础上,还需要一个Plan权限操作包,操作包中包含下面方法:

  1. 校验路由权限: module , controller , method 是否属于用户plan范围内

  2. 获取指定Plan的数据结构:数组结构

  3. 存储Plan数据结构

3.1 权限校验功能

这部分需要检查当前请求的路由是否属于用户拥有的权限,首先应该去缓存中获取用户的权限信息,如果没有,则需要进行权限获取。取得用户权限之后,需要对于当前的路由和用户的权限进行比对,如果成功,则放行,否则将无权访问。

文档更新时间: 2018-12-22 10:08   作者:李彪