yii框架中的登录验证

在我们的程序中,后台页面一般需要做登录验证,yii中有自带的方法,在这里,简单说三种,第一种需要配合系统登陆机制,后面两种不需要,第一种和第二种可以结合使用,具体操作看自己,实现的方法很多

1.    比如后台的controller是Admincontroller,则在里面加上如下代码:

public function filters() {
        return array(
            'accessControl',
        );
    }
    public function accessRules() {
        return array(
            array('deny',
                'actions' => array('list'),

'users' => array('?')

            ),
        );
    }

上面代码的意思是list页面必须登录,否则就跳转到登录页面,'users' => array('?')表示匿名用户,deny是禁止的意思,还有allow及其他,具体的看手册,这里就不多说了,由于用的是系统自带的filterAccessControl,所以需用系统自带的登录机制(下次将做简单说明),注意:yii默认登录页面是site/login,如果需要修改则在config的main文件中配置

        //设置默认登录地址
        'user' => array(
             // enable cookie-based authentication
             'allowAutoLogin' => true,
             'loginUrl'=>array(‘admin/login'),
         )

这样页面就会跳转到admin/login,这样就可以实现简单的登录验证,。

2.还可以通过下面代码来实现,假设我们是通过cookie保存登录信息

    public function filterCheckLogin($filterChain) {
        $cookie = Yii::app()->getRequest()->getCookies();  
        if (!$cookie['userid']) {
            $this->redirect(Yii::app()->createUrl('/admin/login'));
            return;
        }
        $filterChain->run();
    }
    public function filters() {
        return array(
            'checkLogin -login',
        );
    }

这段代码的意思是login这个方法不需要经过filtercheckLogin验证,其他的方法都会先进入到filterCheckLogin这个方法里,进行验证,如果cookie存在即用户已经登陆则继续执行,否则直接跳转到登录页面,这段代码的好处是不需要用系统自带的登录机制,比较简单一点

3.如果不想用以上方法,还可以在run中进行判断,我们知道,在进入action之前会执行run($actionid),所以我们可以重写run方法,在run方法中进行登陆验证,这个也比较自由,不需要使用系统登陆机制,在AdminController类里面加上如下方法:

    public function run($id) {
        $actions = array('login','forgetpwd');
        $cookie = Yii::app()->request->getCookies();
        if (!in_array($id, $actions) && empty($cookie['userid'])) {
            $this->redirect('/admin/login');
        } else {
            parent::run($id);
        }
    }

$id其实就是当前action的名字,也就是方法名,先把不需要登陆的页面的action放到数组里,再判断当前的action是否属于不需要登陆的action,如果不是并且没有登录则跳转到登录页面,否则继续执行。

好了,就简单的写了下,希望对初学者有帮助。错漏之处请指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值