Yii2-usuario:检查管理员

时间:2019-08-26 20:43:09

标签: yii2 rbac

我是Yii2-usuario和Yii2认证的新手。

Yii2提供内置的Yii::$app->user->isGuest,但没有Yii::$app->user->isAdmin

我在chef中将用户adminstrators配置为config/web.php

'user' => [
    'class' => Da\User\Module::class,
    'administrators' => ['chef'],
    ...
],

我的数据库tables auth_*为空。

如何检查当前用户

  • 是管理员吗?
  • 具有管理员权限(角色管理员)吗?

1 个答案:

答案 0 :(得分:1)

看起来像您在RBAC的相关表中缺少数据。您应该阅读GUIDE有关高级RBAC的知识,以及应该如何构建授权数据,即

  • 定义角色和权限;
  • 在角色和权限之间建立关系;
  • 定义规则;
  • 将规则与角色和权限相关联;
  • 将角色分配给用户。

因此,要使其正常工作,请验证您是否具有name管理员在表auth_item中定义的角色,并键入 1 ,然后auth_assignment应该具有{{1您在user_id表中添加的管理员用户(主厨)的}}角色,与定义的角色 admin 相对。

从我的一个应用程序中定义了user角色的图像以及以后需要使用admin的一个路由查看并检查图像

auth_item

enter image description here

auth_assignment

enter image description here

**用户**

enter image description here

如果您按照指南实施高级RBAC,我认为您无需在模块配置下指定任何管理员,因为您随后将通过Yii::$app->user->can()检查对任何操作,模块或控制器的访问,其中Yii::$app->user->can($route)$route中定义,类型为 2

请注意,还有一个auth_item表,该表在您的应用程序扩展且定义了多个角色时使用,主要是用于存储授权项目层次结构的表。您可以在顶部提到的链接中了解它。