美文网首页
权限管理设计思路

权限管理设计思路

作者: 天然卷先生_ | 来源:发表于2020-03-04 16:29 被阅读0次

    最近公司的运营管理系统开发完毕,有时间来写点东西,就先来总结一下我再权限系统的设计思路吧,希望能有点用。

    权限管理分为 功能权限以及数据权限。

    功能权限

    功能权限是指某个用户使用某个功能的权限 ,简单的说就是调用某个接口的权限。

    功能权限比较简单,主要要有三个实体:

    用户:保存用户信息

    角色:用户的角色信息

    权限:权限信息

    通过 用户绑定角色,角色绑定权限来实现对用户权限的控制,他们之间都是多对多的关系。

    数据权限

    数据权限就是指不同的用户,使用同样的接口得到数据数量,数据维度不同,所以数据权限又分为行级权限以及列级权限。

    数据权限-行级权限

    行级权限可能会涉及到层级关系,比如销售数据: 普通员工能只能看自己的销售数据

    销售组长能看这个组及自己的,部门领导能看所有的。还会有跨部门的权限情况:比如财务部的任何一个人都能看销售部所有的数据。

    行级数据权限表设计(主要字段):

    字段1: source_type:需要配置权限的类型(角色或者部门)

    字段2: source_id:角色id 或者部门id

    字段3: target_type:source 能访问的目标数据的 类型(角色或者部门)

    字段3: target_id:角色id或者部门id

    这样一条数据的意思是,source角色或者部门下的人员能够访问target角色或者部门下人员的所有数据。

    数据权限-列级权限

    列级数据权限表设计(主要字段):

    字段1: source_type:需要配置权限的类型(角色或者部门)

    字段2: source_id:角色id 或者部门id

    字段3: target_type:source 能访问的目标数据的 类型(客户列表)

    字段3: target_colums:列名 逗号分隔

    实现

    1. 再用户登陆的时候 将这个用户信息,权限信息,根据以上结构查出来,放到缓存里(redis)

    2. 功能权限的实现都在过滤器(filter)里面,有相应的权限才放行。

    3. 数据权限就是在各个数据接口中,根据每个用户的配置的数据权限动态生成sql ,select 中的值是列级权限的配置,where 条件中加上 行级权限的相关配置。

    本文由博客群发一文多发等运营工具平台 OpenWrite 发布

    相关文章

      网友评论

          本文标题:权限管理设计思路

          本文链接:https://www.haomeiwen.com/subject/gqkblhtx.html