如何在Yii2中获得用户角色?

时间:2014-08-11 16:08:18

标签: php yii yii2 rbac

如何在Yii2中获得用户角色?

我搜索并阅读了Yii2 guide,但我找不到任何解决方案。

8 个答案:

答案 0 :(得分:30)

您可以使用getRolesByUser功能

为用户获取角色

您可以像这样使用

\Yii::$app->authManager->getRolesByUser($user_id);

答案 1 :(得分:18)

您可以使用:

Yii::$app->authManager->getRolesByUser(Yii::$app->user->getId());

答案 2 :(得分:7)

我用:

if (\Yii::$app->authManager-> getAssignment($role,$rule_id))

用于过滤rbac中的user idrole,有关Yii2 Documentation的更多详情

答案 3 :(得分:1)

如何获得用户角色的另一个例子:
Yii::$app->getUser()->identity->role;
如果您的列名为" role"在您的用户表中。

答案 4 :(得分:0)

您可以使用:

 $user =[];
 $userAssigned = Yii::$app->authManager->getAssignments(user_id);
 foreach($userAssigned as $userAssign){
      $user[] = $userAssign->roleName;
 } 

答案 5 :(得分:0)

如果您使用的是amnah/yii2-user模块,则可以使用此模块:

Yii::$app->user->identity->role->name

它将为您提供当前用户角色名称

答案 6 :(得分:0)

良好且更具视觉效果的决定将是设置所有角色的常量。

$userID = $user->getId();
array_keys(Yii::$app->authManager->getRolesByUser($userID))[0] == User::ROLE_NAME

答案 7 :(得分:-1)

您可以使用createcommand获得用户的角色。

    $roleModel = Yii::$app->db
    ->createCommand("Select * from auth_assignment where user_id='889'")
    ->queryOne();

    echo $roleModel['item_name'];

这将是您在auth赋值中的角色。现在,您可以检查用户是否为管理员或编辑或成员。