【问题标题】:YII2 Access Control With ModulesYII2 带模块的访问控制
【发布时间】:2015-06-02 19:16:59
【问题描述】:

我的访问控制代码在模块默认控制器上不起作用,但在所有其他页面上都可以正常工作。知道我做错了什么吗?

编辑:正在发生的事情是:../web/mymodule 不会重定向,但 ../web/mymodule/mycontroller 会重定向。此外,如果尝试 ../web/mymodule/default 它也不起作用。

编辑 2:已解决。问题出在public function beforeAction($action)

public function behaviors()
{
    return [
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'delete' => ['post'],
            ],
        ],
        'access' => [
            'class' => AccessControl::className(),
            'rules' => [
                [
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ],
        ],
    ];
}

【问题讨论】:

  • 会发生什么?有错误吗?根本什么都不做?
  • 任何人都可以访问该页面。它不会重定向到登录。
  • 您确定您确实已经注销了对吗? @ 表示:当前用户不是访客。而guest 表示:\Yii::$app->user->identity === null;,所以不是 ID = 0 的用户
  • 我去了私人导航,只能看到模块默认控制器,所有其他重定向正确。所以我不明白你的意思@Blizz
  • 您应该具体分享您是如何解决问题的,您来这里寻求帮助至少可以提供答案,这样社区可以帮助其他人。

标签: yii2 access-control


【解决方案1】:

似乎你无法控制动作。在SiteController 试试这个:

    return [
        'access' => [
            'class' => AccessControl::className(),
            'only' => ['logout', 'signup'],
            'rules' => [
                [
                    'actions' => ['signup'],
                    'allow' => true,
                    'roles' => ['?'],
                ],
                [
                    'actions' => ['logout'],
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ],
        ],
        ],
        'verbs' => [
            ..............
        ],
    ];

【讨论】:

  • 还是不行。所有其他索引都是重定向我只是不明白为什么defaultController index 没有。
  • 我已经发现了问题。在public function beforeAction($action)。无论如何,谢谢你的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多