<?php /** * IsLoginFilter class file * * 应用于需要判断登录的actions,若没有登录就直接跳转到登录action * * @author hail * @package application.filters */ class IsLoginFilter extends CFilter { /** * 登录action所在controller的名字 * @var string */ public $login_controller; /** * 登录action的名字 * @var string */ public $login_action; public function filter($filterChain) { if($this->preFilter($filterChain)){ if((Yii::app()->controller->id)===$this->login_controller) CController::redirect($this->login_action); else CController::redirect($this->login_controller.'/'.$this->login_action); }else{ $filterChain->run(); } } protected function preFilter($filterChain) { return Yii::app()->user->isGuest; } }
控制器中使用:
<?php class SiteController extends Controller { public function filters() { return array( array( 'application.filters.IsLoginFilter + setting', 'login_controller'=>'site', 'login_action'=>'login', ), ); } }