Yii 自定义 登录 过滤器

<?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',
            ),
        );
    }
}
原文地址:https://www.cnblogs.com/hailspace/p/2971615.html