多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

权限系统笔记(一)、用户中心等

权限系统笔记(一)、用户中心等 文章目录表用户表角色表菜单表关系表-角色菜单表关系表-人员角色关系表数据权限的管理角色角色新增角色删除角色修改解绑用户角色菜单用户用户新增用户删除用户编辑用户查询(不涉及权限联动略)其他web端和h5端的权限过滤效率问题权限系统(用户中心)是一套核心的系统有很多技巧和套路。表用户表CREATETABLEt_user(idint(11)NOTNULL,usernamevarchar(255)NOTNULL,passwordvarchar(255)NOTNULL,PRIMARYKEY(id),UNIQUEKEYusername_unique(username))角色表t_role菜单表t_resource关系表-角色菜单表t_role_resource关系表-人员角色关系表t_user_role_authz数据权限的管理如果只涉及到本人数据和本机构数据那么不用建表通过逻辑就能够控制。如果要自定义机构数据需要建表。而且比较麻烦只能以平面的方式展示。这里有点麻烦例如有1万个用户1000家机构平面展示就是1000万条数据。 有什么好的方法么?微博中就是以这种平面式设计的但是那么多用户肯定分区了否则性能一定会很差。角色角色主要是和功能菜单建立关系。角色新增1、角色表新增记录或编辑信息。2、角色菜单表添加记录(可多条)。3、auth关系表无需操作。(因为这里还不涉及到人)角色删除1、角色表删除。2、角色菜单表删除对应信息。3、auth关系表删除该角色对应信息。角色修改1、角色表新增记录或编辑信息。2、角色和菜单表联动。3、auth关系表需要操作角色添加菜单不用操作此表但是去掉菜单需要操作此表。auth关系表去掉该(角色不再绑定的菜单)。 # 这一步操作可以省略掉。重点肯定是第二步。见过比较好的实践点编辑全量菜单根据已授权的标记为1。点保存已标记的全都传给后台。删除该角色下所有菜单再新增传过去的即可。解绑用户这个功能也不多余某个角色想去掉某个用户难道只能到用户编辑里面吗?当然不是从角色这里应该直接可以。auth关系表去掉该(角色用户)的信息即可。角色菜单这个表看上去有点鸡肋实际很有作用。1、编辑角色菜单。2、给用户授权时用户单表操作没什么说的主要是权限相关。用户新增1、用户表信息新增。2、配置角色(至少一个默认角色否则啥也看不到)。3、auth关系表联动。用户删除1、删除用户表信息。2、删除auth关系表该用户信息。用户编辑1、用户表信息修改。2、auth关系表联动。例如角色的增减及机构的增减。用户查询(不涉及权限联动略)其他web端和h5端的权限过滤之前这个问题想破脑袋因为cookie不够优雅而且代码乱糟糟。后来经历过多个项目是有现成的套路的。比较好的方案是filterignore-path-patterns # 忽略的地址include-path-patterns # 包含的地址当然也会有默认规则。忽略的地址不拦截例如/interface接口默认不拦截。那么拦截到以后如何校验权限呢?很简单将token发送给用户中心单点登录校验。推荐做成可配置的形式。sso.url单点地址sso.key单点key这样就实现了拦截。效率问题之前用过的用户中心卡的要死后来经过了一大波优化速度快了很多想知道是如何优化的。这里要扣操作细节。例如人员编辑100个角色1000家机构从第99个角色中去掉第998个机构的数据。如何快速的落到库里。
返回列表