簡體   English   中英

Yii2 僅允許訪問特定控制器並限制對其他控制器的訪問 controller

[英]Yii2 Allow access to only specific controllers and restrict access to other controller

我有一個包含許多控制器的 yii2 高級項目,我只希望用戶可以訪問某些控制器並阻止對其他控制器的訪問。 使用訪問控制我可以為操作設置規則但不能為控制器設置規則,請提出任何建議

有幾種類型的配置:

1) 使用主要配置阻止對整個應用程序(ak 后端)的訪問:

// ../config/main.php
return [
    // ...
    'components' => [
         // ...
    ],
    'as access' => [
        'class' => yii\filters\AccessControl::class,
        'except' => ['site/error', 'site/login', 'site/logout'],
        'rules' => [
            ['allow' => true, 'roles' => ['@']],
        ],
    ],
];

2) 通過擴展抽象 controller class 來阻止對特定控制器的訪問

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
            ]
        ];
    }
}

現在你可以在你的控制器中擴展這個 controller

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM