权限管理设计思路


title: “权限管理设计思路”
date: 2019-02-28
tags: [“模块设计”]
categories: 后台

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

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

功能权限

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

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

用户:保存用户信息

角色:用户的角色信息

权限:权限信息

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

数据权限

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

数据权限-行级权限

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

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

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

字段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 条件中加上 行级权限的相关配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值