2

ページ コントローラのアクセス ルール:

public function accessRules()
{                   
    $isadmin = User::loadUser(Yii::app()->user->id)->adminUser;

    return array(
            array('allow', 
                    'actions'=>array('index','view','create','update'),
                    'expression'=>"{$isadmin}==1",
                    ),
          array('deny',  // deny all users
                'users'=>array('*'),
            ),          

    );
}

主な構成:

 'user' => array(         // Webuser for the admin area (admin)
        'class'             => 'WebUser',
        'allowAutoLogin' => true,
        'loginUrl'          => array('/user/login'),
        'stateKeyPrefix'    => 'admin_',
    ),

問題: ページ/作成にアクセスすると、ユーザー/ログインにリダイレクトされず、例外がスローされます:

Error 404

The requested page does not exist.

権限のないユーザーのログイン ページにリダイレクトするにはどうすればよいですか?

4

3 に答える 3

2

これを行うには、「deniedCallback」を使用できます。

方法 1

      'deniedCallback' => function() {Yii::app()->controller->redirect(array ('actionName'));},

      //It will come As

       array('allow',                
            'actions' => array('actionName1,actionName2,actionName3'),
            'deniedCallback' => function() {Yii::app()->controller->redirect(array ('actionName'));},
            'users' => array('@'),
        ),

方法 2: 関数を呼び出して同じことを行うこともできます。次のコードを参照してください。

        array('allow',
            'deniedCallback' => array($this, 'goToLogin'),
            'actions' => array('actionName1,actionName2,actionName3'),
            'users' => array('@'),
        ),

goToLoginメソッドのコード

        public function goToLogin()
        {
             $this->redirect('/controller/actionName');
             //For your program 
             //$this->redirect('/site/login');
        }
于 2013-07-08T05:49:44.510 に答える
1

Yii::app()->user->loginRequired();

于 2013-07-08T06:54:34.613 に答える
0

この関数をすべてのコントローラーに追加します。

public function beforeAction($action) {

if (Yii::app()->user->isGuest && Yii::app()->controller->action->id != "login") {
    Yii::app()->user->loginRequired();
}
//something code right here if user valid
return true;  
}

サイト コントローラーには、Yii::app()->controller->action->id != "login"この条件のみが必要です。別のコントローラーのためにそれを削除します

于 2016-09-14T13:08:59.977 に答える