Coffee AdminCoffee Admin
  • 核心

    • 介绍
    • 快速开始
    • 目录结构
    • 布局和主题
    • 路由配置
    • 权限配置
    • 请求配置
  • 其他

    • 常见问题
  • 个人服务
  • 企业服务
赞助
  • 核心

    • 介绍
    • 快速开始
    • 目录结构
    • 布局和主题
    • 路由配置
    • 权限配置
    • 请求配置
  • 其他

    • 常见问题
  • 个人服务
  • 企业服务
赞助
  • 指南

    • 基础

      • 介绍
      • 快速开始
      • 目录结构
      • 布局和主题
      • 路由配置
      • 权限配置
      • 请求配置

权限是后台管理系统的重点,所以在这块尽量做的完善、配置也简单。

权限配置

权限模型是依据RBAC模型,即Role-Based Access Control,角色访问控制。权限配置和路由配置是息息相关的,

角色控制

每个用户都会设置一个roles属性,roles属性是一个数组,数组中每个元素都是一个角色。同时,在设置路由的时候,也会有个字段roles。当两者存在交集的时候,说明当前用户可以访问该路由。 例如:

  • 当前用户roles为['admin'],设置路由的时候,设置roles: ['admin'],则当前用户可以访问该路由。如果设置roles: ['user'],则当前用户也可以访问该路由。

注意:

  • 如果当前用户没有设置roles属性,则默认能访问所有没有配置roles的路由。

动态路由

这里提到动态路由,实际上是给用户设置了dynamicRoutes属性,dynamicRoutes属性是一个数组,数组中每个元素都是一个路由的path。当用户登录后,会根据dynamicRoutes属性,过滤路由。 例如:

  • 当前用户dynamicRoutes为['/table','/table/basic'],则当前用户只能访问/table和/table/basic路径。 注意:
  • dynamicRoutes默认值为[/],表示的根路由,可以访问所有。
  • 与角色控制相辅相成,会先通过角色过滤一遍,然后在根据动态路由进行过滤。 其实说白了,动态路由需要考后台控制,这适合角色较多,且角色经常变动的场景。

按钮权限

现在按钮权限还未完全实现,基本功能已经实现。因为现在采用Antd的组件,秉着侵入性较小的原则,并没有重写组件。而且外层套一层Permission组件。 通过判断用户中的permissions属性,来决定按钮是否显示。 按钮权限的格式为['router:roles:button'],router为路由,roles为角色,button为按钮。 例如:

  • 当前用户permissions为['table:admin:add'],则当前用户可以访问table路径,admin角色可以访问add按钮。

注意:

  • 如果当前用户没有设置permissions属性或者默认['*:*:*'],则默认拥有所有权限。

后续规划

权限这块非常重要,后续也需要仔细的打磨,尽量满足多种场景。目前已知需要做的:
1. 按钮级别权限,感觉目前实现的有点冗余,在想一种更合理的实现方式
2. 数据权限还未实现 ,可能更需要后端的配合
Last Updated:
Contributors: yangcw
Prev
路由配置
Next
请求配置