含义Yii :: $ app-> user-> identity-> role-> role_name;

时间:2015-08-13 23:48:58

标签: yii2 identity yii2-advanced-app rbac

在一本名为Yii2 for Beginners的书中,主要是关于高级模板,我遇到了以下无法解释的代码,它似乎与RBAC相关:

$userHasRoleName = Yii::$app->user->identity->role->role_name;

这究竟是什么意思?例如,我猜这个:

Yii::$app->user

指的是这个文件:

vendor\yiisoft\yii2\web\User.php

这是对的吗?

在任何情况下,其余代码所指的是什么?具体做法是:

->identity->role->role_name

在上面的User.php文件中,我找不到像" function identity()"这样的东西,所以它不可能。我发现了许多$ identity变量,但我不知道代码可能指的是哪一个。并且根本没有$ role变量。

这段代码是指什么:

Yii::$app->user->identity->role->role_name;

1 个答案:

答案 0 :(得分:1)

Yii描述了像__get,__ set等魔术方法,以获取无法访问的属性的访问权限。通常这样的方法从get或set开始(在Yii实现中)。要访问->identity\yii\web\User方法getIdentity。此方法返回您在配置中描述的identityClass组件的user属性的标识。通常identityClass是实现IdentityInterface的AR模型。

'components' => [
    'user' => [
        'identityClass' => 'common\models\User',
    ]
]

要访问->role,您必须创建一个新方法

namespace common\models;

class User extends ActiveRecord implements IdentityInterface {

    public function getRole(){
        // if user can have only one role
        return current( \Yii::$app->authManager->getRolesByUser( $this->id ) );
    }
}

Btw ->role->role_name的实施可能会有很大不同。