yii2アクセスコントロールフィルタを使用して遊んだ後、私は多くの役に立ちましたAnswerを訪れました。私は以下を実行してアクセスを制限しようとしました:Yii2制限付きAccessControlFilterロジック
thisに基づいて私はAccessRuleを作成しました。私は次のロジックを追加しました。
...
// Check if the user is logged in, and the roles match
} elseif (!$user->getIsGuest() && $role === '#' && $user->can("admin")) {
return true;
} elseif (!$user->getIsGuest() && $role === '~' && $user->can("admin")) {
return true;
}
...
$user->can("admin")
方法はthisシンプルyii2のユーザ認証モジュールから来ているのに対し。
私の考えは、デフォルトですべてを制限し、必要に応じてアクション/サイドを開くことです。
は私が(web.php)を意味...
'as beforeRequest' => [
'class' => 'yii\filters\AccessControl',
'ruleConfig' => [
'class' => 'app\components\AccessRule'
],
'rules' => [
[
'allow' => true,
'roles' => ['#'],
],
...
私の設定に次の追加、役割の管理を持っているユーザーは、すべてを行うために許可されています。他のすべてのロール/ユーザー(ゲスト、@
または~
(ログインしているが管理者の役割はありません))は、これまで何もできません。
もちろん、ロール~
のユーザーは、何かをすることを許可されるべきです。だから、私は1つのコントローラの許可を開いて、まだ役割~
でUnfortanatlyユーザに次の動作
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'ruleConfig' => [
'class' => AccessRule::className()
],
'only' => ['index'],
'rules' => [
[
'actions' => ['index'],
'allow' => true,
'roles' => ['~'],
],
],
],
...
を追加することはできませんアクセスそのspezifiedコントローラのアクションのインデックス。
私の論理/思考は不適切ですか?
アクセス制御フィルタを呼び出すシーケンスに問題がありますか?
try @ instead〜 – bxN5
@Roman コントローラの動作を '@'に変更しました。ユーザーはあなたのコードから読み取ることができる限り、サイト – Luc