详解yii用户登录体系

详解yii用户登录体系

下面将我对yii用户登录的分析拿出来与大家共享一下,我是从Yii::app()->user,登录验证,持久化三个方面来研究

一.Yii::app()->user

这是Yii底层调用用户组件,是cwebuser的一个实例,如果没有在main.php文件里配置的话yii默认会调用cwebuser,当然也可以自己去扩展cwebuser这个类

先说一下所有组件类的基类-CComponent,ccomponent实现了定义,使用属性和事件的协议,属性石通过属性是通过getter方法或/和setter方法定义。

访问属性就像访问普通的对象变量。读取或写入属性将调用应相的 getter或setter方法

例-〉

    $a=$component->text;     // 相当于 $a=$component->getText();

    $component->text='abc';  // 相当于 to $component->setText('abc');

getter 和 setter 方法的格式如下:

    // getter, 定义读取属性 'text'

    public function getText() { ... }

    // setter, 定义写入属性 'text' 将 $value 的值赋给这个属性

    public function setText($value) { ... }

由此可以看出,在调用CComponent对象属性的时候,可以调用$this->getUser()方法也可以直接用$this->user这个属性。

 

来看一下登录流程:

用户的登录页面是site/login,actionLogin中首先实例化了一个LoginForm对象,当用户登录数据提交后系统调

用LoginForm的loginin方法在此方法中调用了CUserIdentity类的一个子类(自由扩展)的authenticate方法对用户名,密码进行验证。验证通过后,调用一下CWebuser的login方法,在此方法中会调用创建session的方法,从而保证了cwebuser的持久化。

 

具体的概述就是:

CWebUser 代表一个Web应用程序的持久状态.

 

CWebUser 作为ID为user的一个应用程序组件. 因此, 在任何地方都能访问用户状态 Yii::app()->user.

 

CWebUser 应该和一个 identity 一起使用 identity 实现了实际的验证算法.

一个典型的使用CWebUser的身份验证过程如下:

用户提供所需的信息进行身份验证.

一个 identity instance 是用用户提供 的信息创建的.

 

FROM:http://blog.sina.com.cn/s/blog_81ad08410100z20m.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值