そのコントローラーの accessRules と accessControl フィルターに基づいて、現在のユーザーが別のコントローラーのアクションにアクセスできるかどうかを判断する賢明な方法はありますか?
たとえば、ユーザーの役割とそのコントローラーの accessRules() で定義されたルールに基づいて、ユーザーがアクセス許可を持っていないコントローラー アクションへのリンクを表示したくありません。
そのコントローラーの accessRules と accessControl フィルターに基づいて、現在のユーザーが別のコントローラーのアクションにアクセスできるかどうかを判断する賢明な方法はありますか?
たとえば、ユーザーの役割とそのコントローラーの accessRules() で定義されたルールに基づいて、ユーザーがアクセス許可を持っていないコントローラー アクションへのリンクを表示したくありません。
Yiiがコントローラーをどのように処理するかによって、答えは変わらないと思います。
唯一の方法は、コントローラーを自分で解析し、コントローラーの一部として独自のルールをコードに動的に追加してから、ユーザーがbizrule呼び出しを介して特定の関数にアクセスできるかどうかを評価することです。
ただし、コメント内のリンクされた質問の回答は賢明なものであり、より複雑な役割ベースのアクセス管理に適しています。ルールは外部に保存されているため、コントローラーとそのアクションおよびbamを使用してチェック関数を呼び出すだけで、真または偽がわかります。
絶対:
Yii::import('application.controllers.YourControllerName');
$controller = new YourControllerName($this->id);
echo '<pre>';
var_dump($controller->accessRules());
echo '</pre>';
特定のコントローラーのルールにアクセスできます。また、現在のユーザーが特定のコントローラーの特定のアクションを表示できるかどうかを判断できます =)。