Yii2.0 遊客訪問限制

      最近在用Yii2.0做項目,其中需要實現一個功能:沒有登錄不能訪問部分頁面,即遊客身份訪問限制。查了半天資料,終於找到答案。解決方法如下:

      在access裏,access即訪問的意思,其中有個配置項 ‘only’=>['login','about']  這是什麼意思呢,意思是僅僅在login、about兩個action內起作用,即當action

      是login、about時,會進入rules裏做下一步驗證。

      但是 我們想除了登錄、註冊以外其他action均不允許訪問怎麼辦呢?還有其他的配置,我們把only 改成 except,什麼意思呢,是除去什麼什麼之外的意思,就是

      說對除了 login、signup以外的action起作用。接下來,在rules=>[['action'=>['login','signup'],'allow'=>true,'roles'=>['?']]]  裏,rules就是規則,這裏邊可以寫

      多條,actions是指規則針對哪個action,allow指是否允許訪問,'roles'這個字段是關鍵的,這是允許訪問的角色。其中?代表遊客,@代表已登錄的用戶。


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章