[元清] 分享:一个权限模块系列之 我是怎么把权限模块抽成一个saas服务的,基于rbac 的(这个是第二篇,没有介绍代码,第一篇有更详细的代码阐述)
「一个权限模块系列之 我是怎么把权限模块抽成一个saas服务的」
来源:云原生后端社区https://www.yuque.com/server_mind/answer
[健] 一个系统最基本的功能就是 登录权限 但是往往别人觉得没技术含量 其实里面学问挺大 可以贴出来一起探讨下 比如数据权限 菜单权限 登录和验证方式啥的
[犀利豆] 好巧,我之前也做个一个,我主要介绍的是技术上的一些点 「如何利用 Spring Hibernate 高级特性设计实现一个权限系统」
**[元清] 树描述组织结构少不了,但是我觉得用rbac 思想指导更好
[犀利豆] 主要是业务有一些要求,要根据组织架构做一些数据的隔离
[元清] 嗯,数据隔离是少不了的,我是把角色作为一个租户id
[犀利豆] 先有的系统,后有的权限系统,考虑了很多 接入方怎么快速接入,怎么做到无侵入
[元清] 为什么要做到数据库层呢,做到数据库层已经侵入了吧,我这个就是配置一下,就可以了,配置一层filter
[犀利豆] 这个的问题是比较具体的,我们的数据要按照公司的组织架构做数据隔离
[元清] 都是按照组织架构做数据隔离的
[犀利豆] 比如,公司分成了华南,华东,华北。三个地区的用户之间看到的信息是隔离的。
[元清] 嗯,这个当然是的,用一个租户id 就可以了
[犀利豆] 是的,所以这个租户id 要拼接到sql 里面,查询数据
[元清] 哦,你们没有在原有表上面加字段是吧
[犀利豆] 这个隔离不是全部隔离,还有横向部门的人,可以看见某几个区域的数据。
[元清] 哦,你们是没有改数据库表结构,通过命名方式,来做数据查询么,比如命名规则租户id+xxxx,这个就是树形结构的描述了,我的树形是父拥有所有子的权限,我们还是侵入的,业务端的表都要加租户id 去标示
[犀利豆] 没有 系统运行很长一段时间了 不太有时间改 所以想到的方法是用hibernate 的filter 在session层级做的
[元清] 可以的,hibernate我都没用过
[犀利豆] 我们也要加租户id,只是已经有了。用hibernate的filter的好处只是,不需要改动controller和service层级,dao层级需要在entity 实际上配置,一个隔离租户的sql,在执行查询的时候,利用aop 把查询的session取出来,自动把过滤的条件拼接在业务sql上
[元清] **听起来就很复杂,不过思路还蛮好的,应该也不难维护
来源:云原生后端社区https://www.yuque.com/server_mind/answer
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。