2016-05-20 2 views
2

У меня есть роль, называемая «новая». Хотя я не устанавливаю его явно, я хочу, чтобы это была роль по умолчанию, как только пользователь регистрируется. Я использую расширение yii2-пользователя и yii2-rbac через dektrium.Yii2 RBAC не учитывает установку по умолчанию, заданную по умолчанию

У меня есть следующий в моих компонентах ...

'authManager' => [ 
    'class' => 'yii\rbac\DbManager', 
    'defaultRoles' => ['new'], 
], 

Однако следующий возвращает ложь ...

if (Yii::$app->user->can('new')) 

И следующие возвращает пустой массив тоже ...

print_r(Yii::$app->authManager->getRolesByUser(Yii::$app->user->identity->id)); 

Я не уверен, где искать. Я дважды проверил и посмотрел «новую» роль, правильно настроенную в представлениях конфигурации RBAC.

По какой-то причине либо Yii2 не соблюдает мою конфигурацию defaultRole, либо мое ожидание не соответствует этой настройке. Цените любую помощь.

ответ

0

Это:

Yii::$app->user->can('new') 

должен работать (должен возвращать true), убедитесь, что вы не перекрытая defaultRoles где-то в прикладной конфигурации (это распространенная ошибка, особенно в пожилом приложение).

Я бы рекомендовал проверить, что Yii::$app->authManager->defaultRoles содержит прямо перед ним. Кажется, что нет вашей добавленной роли new.

Другими словами, RBAC уважает вариант defaultRoles, так что это ваша ошибка.

отметить также, что это:

Yii::$app->authManager->getRolesByUser($userId); 

возвращает все роли, не по умолчанию. Это по дизайну.

Однако

Yii::$app->authManager->getRoles(); 

возвращает все роли, включая по умолчанию.

+0

Привет Я сделал print_r (Yii :: $ app-> authManager-> defaultRoles) и заметил, что массив пуст. По какой-то причине он не устанавливается. Я тестировал на странице Default/Index. Есть идеи. –

+0

@ShahidThaika Проверьте, отменено ли оно с помощью расширений, которые вы используете. Проверьте их документы, возможно, есть другой способ его настройки. То, что я написал, отлично работает без расширений. – arogachev

+0

Да, я не думаю, что расширение уважает это поле, потому что я просто сделал новую установку и тест без каких-либо успехов. –

Смежные вопросы