2013-07-07 38 views
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. 

如何重定向到未經授權用戶的登錄頁面?

回答

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'); 
     } 
1

的Yii ::應用程序() - >用戶> loginRequired();

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 ::應用程序() - >控制器 - >動作 - > ID = 「登陸」這個條件。將其移除以用於其他控制器

相關問題