如果我的问题正确,您基本上是在尝试阻止对控制器中某些操作的访问而无需登录,对吗?
如果这是您所追求的,那么正确的方法是:
actionMethod()
像这样在控制器中制作一个:
class SomeController extends CController{
public function actionSomeAction(){
... More code...
}
之后,您可以使用以下命令访问该站点: path/to/application/controllerName/actionName
- 现在,如果您想强制用户在访问操作之前登录,请执行以下操作:
像这样进行访问控制:
/**
* @return array action filters
*/
public function filters()
{
return array(
'accessControl', // perform access control for CRUD operations
);
}
/**
* Specifies the access control rules.
* This method is used by the 'accessControl' filter.
* @return array access control rules
*/
public function accessRules()
{
return array(
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions' => array('**yourActionMethodName**'),
'users' => array('@'),
),
array('deny', // deny all users
'users' => array('*'),
),
);
}
现在只有经过身份验证的用户才能访问该 URL。
我希望它解决了你的问题。
If you simply want to check if the user is a guest and if he is, send him to the login page everytime:
在 config/main.php 中,添加以下内容:
'defaultController' => 'controllerName/actionMethod',
在该控制器中只需添加上述访问规则。现在,默认情况下,您将站点打开到访问控制方法。因此它会自动将您重定向到登录页面。
Even another method
:
只需将其添加到views/layouts/main.php
<?php
if(Yii::app()->user->isGuest)
{
$this->redirect('/site/login');
}
?>