通过扩展CWebUser添加信息到Yii:app()->user
╃巡洋艦㊣ 发布于 2011年03月03日
我发现了一个更好的解决方案。
(您的登录验证可能与我的版本不同,因此你将会使用适合脚本,以满足您的需求。我只告诉你我的意思)
步骤:1、添加$user属性到UserIdentity类。 添加getUser()方法-getter上面这个属性。加setUser($user)方法-setter上面这个属性,它可以赋值给user的信息通过$user这个属性。
我的UserIdentity类例子:
<?php
class UserIdentity extends CUserIdentity
{
/**
* User's attributes
* @var array
*/
public $user;
public function authenticate()
{
$this->errorCode=self::ERROR_PASSWORD_INVALID;
$user=User::model()->findByAttributes(array('email'=>CHtml::encode($this->username)));
if ($user)
{
if ($user->password === md5($user->salt.$this->password)) {
$this->errorCode=self::ERROR_NONE;
$this->setUser($user);
}
}
unset($user);
return !$this->errorCode;
}
public function getUser()
{
return $this->user;
}
public function setUser(CActiveRecord $user)
{
$this->user=$user->attributes;
}
}
?>
现在用户的属性已经设置,创建WebUser类并把它放在/protected/components
<?php
class WebUser extends CWebUser
{
public function __get($name)
{
if ($this->hasState('__userInfo')) {
$user=$this->getState('__userInfo',array());
if (isset($user[$name])) {
return $user[$name];
}
}
return parent::__get($name);
}
public function login($identity, $duration) {
$this->setState('__userInfo', $identity->getUser());
parent::login($identity, $duration);
}
}
?>
记得设置一下这个类Yii::app()->user
<?php
'components'=>array(
'user'=>array(
'class'=>'WebUser',
)
)
?>
应该工作了,你现在可以用user的属性访问用户数据库中列。
分享到:
相关推荐
Yii::app()->user->login($identity); } else { echo $identity->errorMessage; } ``` 当用户退出时,调用`logout()`方法: ```php Yii::app()->user->logout(); ``` `Yii::app()->user` 是Yii中的一个组件,它...
此时,可以调用`Yii::app()->user->login`方法使用户登录系统。 接下来我们深入探讨`Yii::app()->user->login`方法的具体实现。该方法定义在`CWebUser`类中,主要负责以下几个关键步骤: 1. **更改用户身份**:...
如果验证成功,`authenticate()`会设置`_identity`属性,然后在`login()`方法中,使用`Yii::app()->user->login()`将用户身份信息保存到会话,以便进行后续的会话管理。 退出功能相对简单,可以通过`Yii::app()->...
本文实例讲述了Yii框架用户登录session丢失问题解决方法。分享给大家供大家参考,具体如下: 最近做项目,使用的是YII框架,用户的登录总是出现有时候能登录,有时候不能登录的情况。...Yii::app()->getS
`Yii::app()->user->login`方法是实现用户登录的核心所在,它属于`CWebUser`类。在`CWebUser`类的`login`方法中,会调用`changeIdentity`来改变当前用户的身份信息,包括用户ID、用户名和持久化状态。然后,`login`...
'class'=>'WebUser', // WebUser是一个扩展自CWebUser的类,可以在此基础上自定义用户登录相关的行为 'stateKeyPrefix'=>'member', // 设置一个特定的前缀,用以区分前台和后台的session 'allowAutoLogin'=>true,...
你可能会说,Yii 已经用CWebUser::getReturnUrl()和CWebUser::setReturnUrl()方法完美地处理了 returnUrl。 为什么不使用那些? 这些方法将 returnUrl 存储到用户会话中的单个变量中。 当我们打开多个选项卡时,这...
9. **扩展性**:Yii的插件和模块系统允许开发者轻松添加新的功能,`CModule`类是模块的基类,` yiisoft/extensions `目录存放第三方扩展。 通过对Yii 1.1.14源代码的深入学习,开发者不仅可以提升自己的PHP编程技巧...
Yii框架是基于组件的高性能PHP框架,用于开发Web2.0应用。该框架以其高效、灵活和可扩展性而闻名,被广泛...通过仔细研究这个思维导图,开发者可以更深入地理解Yii的每一个方面,从而更好地运用到实际项目开发中去。
在“Yii 1.1 App 高级结构”中,我们将深入探讨该框架如何组织应用程序的各个部分,以及如何利用这些结构优化项目。 ### 1. MVC 设计模式 Yii 采用 Model-View-Controller(MVC)设计模式,将应用程序的逻辑分为三...
通过在用户表(tbl_user)中添加role字段,然后根据角色字段的值来区分管理员和普通用户,实现不同角色用户的不同访问控制。具体实现步骤包括: 1. 创建一个名为WebUser的组件,这个组件是对CWebUser的一个扩展,它...