页面控制器的访问规则:
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_',
),
问题: 当我访问pages / create时,它没有重定向到user / login但抛出异常:
Error 404
The requested page does not exist.
如何为未经授权的用户重定向到登录页面?
答案 0 :(得分: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 :(得分:1)
的Yii ::应用程序() - >用户> loginRequired();
答案 2 :(得分: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”此条件。删除它为另一个控制器