开发者社区> 问答> 正文

权限系统设计相关

[元清] 分享:一个权限模块系列之 我是怎么把权限模块抽成一个saas服务的,基于rbac 的(这个是第二篇,没有介绍代码,第一篇有更详细的代码阐述)
一个权限模块系列之 我是怎么把权限模块抽成一个saas服务的

来源:云原生后端社区https://www.yuque.com/server_mind/answer

展开
收起
montos 2020-04-20 18:27:09 673 0
1 条回答
写回答
取消 提交回答
  • [健] 一个系统最基本的功能就是  登录权限 但是往往别人觉得没技术含量 其实里面学问挺大 可以贴出来一起探讨下 比如数据权限 菜单权限 登录和验证方式啥的

    [犀利豆] 好巧,我之前也做个一个,我主要介绍的是技术上的一些点 「如何利用 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

    2020-04-20 18:27:23
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
重新出发:阿里云数据库开源整体策略 立即下载
如何创建一个成功的(在业务和开发中)开源项目 立即下载
企业局数据库敏捷研发模式 立即下载