猿问

Yii2 只允许访问特定控制器并限制对其他控制器的访问

我有一个包含许多控制器的 yii2 高级项目,我只希望用户可以访问某些控制器并阻止对其他控制器的访问。使用访问控制我可以为操作设置规则但不能为控制器设置规则,请提出任何建议



明月笑刀无情
浏览 119回答 1
1回答

梦里花落0921

有几种类型的配置:1) 使用主要配置阻止对整个应用程序(ak 后端)的访问:// ../config/main.phpreturn [    // ...    'components' => [         // ...    ],    'as access' => [        'class' => yii\filters\AccessControl::class,        'except' => ['site/error', 'site/login', 'site/logout'],        'rules' => [            ['allow' => true, 'roles' => ['@']],        ],    ],];2)通过扩展抽象控制器类来阻止对特定控制器的访问use yii\filters\AccessControl;use yii\web\Controller;/** *  AbstractSecured controller */abstract class AbstractSecuredController extends Controller{    /**     * {@inheritdoc}     */    public function behaviors()    {        return [            'access' => [                'class' => AccessControl::class,                // ...                // rules            ]        ];    }}现在你可以在你的控制器中扩展这个控制器use yii\helpers\ArrayHelper;/** * MyNonPublic controller */class MyNonPublicController extends AbstractSecuredController{    /**     * {@inheritdoc}     */    public function behaviors()    {        return ArrayHelper::merge(            parent::behaviors(),            [                // ...                // controller specific behaviors                // you can even rewrite access behavior config            ]        );    }}3)你也可以配置ACL
随时随地看视频慕课网APP
我要回答