夏有木工作室夏有木工作室XymStudio
  • Home
  • Blog
  • About
  • Contact
夏有木工作室夏有木工作室XymStudio
All Articles/
架构设计

权限概念模型设计

EricEric
2024/07/18
·3 min read (820 words)·

深入浅出解析企业级权限概念模型,从基础 RBAC 到多租户、部门、身份维度扩展与按钮级细粒度权限控制。

Table of Contents

  • 权限场景
  • 概念模型设计
  • 写在最后
  • 推荐阅读
  • 架构设计推荐阅读

以 B2B 电商场景为例,梳理其中复杂的权限场景,通过概念模型快速了解大致需要涉及哪些模型以及这些模型之间的关系,并通过这些模型梳理出设计要点。

权限场景

多应用端:Admin PC Web Portal、Customer PC Web Portal、H5 Mobile、Mini-Program、Android App、IOS APP

登陆/注册平台:企业 SSO 系统、Mini Program、自定义注册页面等

认证:

- SSO发起登陆:用户通过 SSO 登陆,登陆成功后创建用户账号
- 小程序发起登陆:用户通过小程序登陆,登陆成功后创建用户账户
- 用户注册登陆:用户通过访问注册页面,注册账户并登录系统

SSO Login Process(非小程序端):

image-20240629213114963

Mini Program Login Process(官方图例):

img

授权:

- 不同端用户:可采用灵活的角色分配方式,通过内置角色默认赋值或者通过超级管理员进行配置
- 内置角色:比如小程序端内置游客、普通会员等角色;未注册时以游客访问;注册登陆后成为普通会员
- 初始化超级管理员:系统上线初始化超级管理员角色,便于后续用户账号的权限配置
- 管理员配置权限:超级管理员可以配置用户账号的角色、资源和数据权限,便于精细化管理用户的权限
- 管理员禁用账号:超级管理员可以禁用账号,账号将不可登陆系统

概念模型设计

image-20240706110208996

设计要点:

  1. 用户通过不同平台进行登陆或注册,比如:SSO 平台、MiniProgram、定制化登陆注册页面

  2. 用户可以大致区分了两类,一类是外部用户,一类是内部用户;不同类型的用户可能采用不同的方式进行注册登陆

  3. 功能权限:用户拥有的角色,在某一个 Client 端能够看到什么菜单、页面、按钮,可以调用哪些 API 接口;通过资源来定义需要控制访问的对象,比如:菜单、页面、API 接口等

  4. 数据权限:用户通过数据权限维度配置,决定可以看到或操作哪些范围的数据

  5. 组织树:通过企业内组织树/职位判断上下级关系,上级一般需要自动继承下级的权限

  6. 在简单场景中,使用传统的 RBAC 模型,用户通过分配角色来获取权限,但在一些复杂的企业级应用中,无法完全满足需求,因此引入身份的概念,一个身份是一组角色和数据权限的集合,用户在应用中可以切换身份来使用不同的角色和数据权限集合;同时用户还可以扮演多个身份,比如:一个员工在不同项目中可能扮演开发者、审计员和项目经理等不同的身份,每个身份对应不同的权限

  7. 应用:表示不同的前端 Portal,比如管理端应用、商城端应用等;不同的应用有不同的权限体系

  8. 采用微服务架构,可通过 API Gateway 做统一的认证,微服务间默认相互授信,通过 Http Request 的 Header 传递当前用户信息。

  9. **前后端分离:**前端将 token 存储在 LocalStorage 或者 Session 中,通过接口获取当前用户的功能权限进行菜单、页面、按钮等控制。数据权限由后端控制,以确定用户可以访问或者操作的数据范围。

写在最后

权限设计将功能权限和数据权限分开管理,保证了权限系统的灵活性和扩展性。通过身份、角色、资源、数据权限和组织结构的关联,实现了对用户权限的细粒度控制。

推荐阅读

支付概念模型设计

架构设计推荐阅读

如果你对企业 4A 架构、权限系统、支付结算与复杂业务建模感兴趣,推荐阅读:

  • 企业 4A 架构:业务、应用、数据、技术的完美融合
  • 权限概念模型设计
  • 支付概念模型设计
  • 结算概念模型设计

👉 查阅更多企业级系统设计与工程实战,欢迎访问 架构设计专栏完整目录。

Previous

单点登录系统(SSO)自建方案总结

Next

微服务鉴权设计:SpringBoot 3.x + OAuth2

More Articles

使用 Sa-Token 平替 Spring Security,告别繁琐的认证与鉴权

使用 Sa-Token 平替 Spring Security,告别繁琐的认证与鉴权

对比传统 Spring Security 的复杂繁重,分享使用轻量 Sa-Token 框架实现无痛多端鉴权、单点登录与路由拦截的最佳实践。

EricEric
2025/01/15
为什么写不好 DDD 代码?

为什么写不好 DDD 代码?

深度剖析为什么大部分团队写不好 DDD,从建模思维、业务边界侵蚀到防腐层设计,解析领域驱动的核心痛点与破局解法。

EricEric
2025/01/14
良好的异常处理设计:系统稳定性的基础保障

良好的异常处理设计:系统稳定性的基础保障

探讨企业级后端的全局异常体系设计,规范业务错误码、状态流转异常捕获与微服务防御性兜底保障。

EricEric
2024/11/27
夏有木工作室夏有木工作室XymStudio

Professional software engineering partner, crafting high-performance digital products and enterprise solutions.

GitHubGitHubEmail
Built with夏有木工作室夏有木工作室夏有木

川公网安备51012202002478号|蜀ICP备2025156031号-1

Product
  • Xym ERP
Tools
  • WeChat Formatter
Resources
  • Blog
  • Changelog
Company
  • About Us
  • Contact
Legal
  • Cookie Policy
  • Privacy Policy
  • Terms of Service
© 2026 XymStudio All Rights Reserved.