搜索中心
搜索中心 搜索快照

模块入门开发教程 - 后台权限管理

权限校验原理

后台权限管理统一在 ModStart\Admin\Middleware\AuthMiddleware.php 管理,匹配规则如下:

  • ① 根据访问路径拼接权限标识,如 \Module\Aaa\Admin\Controller\BbbController@ccc
  • ② 如果管理员权限标识列表中包含第 ① 步拼接的权限标识,则校验权限成功,否则进行第 ③ 步
  • ③ 如果当前控制器定义了静态变量 $PermitMethodMap,对权限标识进行转换,转换表如下
    • currentMethod => checkMethod 使用 当前 Controller 的 checkMethod 检查权限
    • currentMethod => controller@method 使用 Controller@method 检查权限
    • currentMethod => @rule 使用 rule 检查权限
    • currentMethod => * 忽略匹配不到时的权限检查
    • * => * 本 Controller 的所有方法匹配不到时忽略权限检查
  • ④ 查找管理员权限标识中是否拥有权限标识,如果有则校验权限成功,否则权限校验失败

权限标识定义方法

在后台导航菜单定义时,默认会 url 作为权限校验标识

// ...
[
  'title' => '二级菜单',
  'url' => '\Module\Xxx\Admin\Controller\XxxController@index',
  // 增加隐藏菜单的参数
  'hide' => true,
]
// ...

也可自定义权限标识

// ...
[
  'title' => '二级菜单',
  'url' => '\Module\Xxx\Admin\Controller\XxxController@index',
  'rule' => 'MyCustomRule',
  'hide' => true,
]
// ...

管理员权限标识获取方法

使用了RBAC标准授权:

用户表(admin_user) ↔ 角色关联表(admin_user_role) ↔ 角色表(admin_role) ↔ 角色权限表(admin_role_rule)

用户登录后可通过如下方法获取用户角色标识列表

Session::get('_adminRules',[])
查看原文
QQ
微信