Skip to content

权限系统

本章节介绍企业级权限系统的设计方案,包括 RBAC 模型与数据权限控制。

权限模型

RBAC(基于角色的访问控制)

用户 → 角色 → 权限
User → Role → Permission

核心表结构:

  • user:用户表
  • role:角色表
  • permission:权限表
  • user_role:用户角色关联
  • role_permission:角色权限关联

扩展:RBAC + 数据权限

功能权限:控制"能做什么"(增删改查)
数据权限:控制"能看什么数据"(部门/个人/全部)

Spring Security 集成

java
@PreAuthorize("hasPermission('order', 'read')")
public List<Order> listOrders() {
    // 数据权限过滤在 Service 层处理
    return orderService.list(getCurrentUserDataScope());
}

数据权限方案

方案适用场景
MyBatis 拦截器自动注入 SQL 过滤条件
注解 + AOP灵活控制方法级数据范围
视图隔离不同角色查不同数据库视图

常见问题

Q: 权限数据如何缓存? 将用户权限信息缓存到 Redis,登录时加载,修改角色后主动失效。

Q: 如何处理权限的层级继承? 使用递归或闭包表(closure table)存储树形权限节点。

基于 VitePress 构建