2016-05-20 3 views
2

私は「new」という役割を持っています。私は明示的に設定しませんが、ユーザーが登録するとすぐにデフォルトの役割にしておきたいと思います。私はdektriumによってyii2ユーザーとyii2-rbac拡張を使用しています。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をオーバーライドしていないことを確認してください(これは特に、高度なアプリケーションで一般的な間違いです)。

私はその前に何が入っているのかを確認することをお勧めします。あなたの追加された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

ええ、エクステンションがそのフィールドを尊重しているとは思えません。私はちょうど新しいインストールとテストを成功させました。 –

関連する問題