只需在 SiteController 的 index() 操作顶部添加以下内容:
if(Yii::app()->user->getId()===null)
$this->redirect(array('site/login'));
它将检查用户是否已登录。如果不是这样,页面将重定向到登录。
为了避免未登录的用户访问任何操作,您需要修改控制器的 accessRules() 函数:
public function accessRules()
{
return array(
array('allow',
'actions'=>array(),
'users'=>array('*'),
),
array('allow',
'actions'=>array(),
'users'=>array('@'),
),
array('allow',
'actions'=>array(),
'users'=>array('admin'),
),
array('deny',
'actions'=>array(),
'users'=>array('*'),
),
);
}
在每个控制器中,我们都有那个函数,在其中我们有四个数组。每个数组声明一个访问规则。在“actions”参数中,我们指定哪些操作将受到该访问规则的影响,在“users”中,我们指定允许哪些用户访问这些操作。 '*' 表示所有用户,经过身份验证或未经身份验证。 '@' 意味着只有经过身份验证的用户,'admin' 意味着当然只有管理员成员。
如果任何 'actions' 参数没有分配实际的动作,那么只需删除比行:
array('allow',
'users'=>array('admin'),
),