xox9001
(Xox9001)
1
刚看BLOG教程中对于用户信息认证之后,用户信息存储的代码。
对这里产生了一些疑问。
第一,用户信息存放在哪?如果在SESSION中,请问YII中有方法读取SESSION吗?还是需要用PHP自身的函数去读取?
第二,用户信息存储只会存储USERNAME与ID,请问如何让YII存储用户的PWD和其他信息呢?
【这里我有试过魔术方法,似乎行不通…】
第三,Yii::app()->user 这个类的GETXXX方法是写死的还是动态的?也就是说例如用户表有N个字段,那么直接可以使用 GETXXX字段的相应名称的FUNCTION 去读取信息?
诚心求教,问题也许很基础,请知道的朋友给予指点。
xox9001
(Xox9001)
2
刚看到个方法,可以用 SETSTATE()这个FUNCTION 去存储一些信息。
请问如果不使用这个方法可以让YII自动保存PWD么?
dufei22
(Dufei22)
4
你可以参考components/UserIdentity.php中
public function authenticate()
{
$username=strtolower($this->username);
$user=Users::model()->find('LOWER(username)=? AND userStatus=1',array($username));
if($user===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if(md5($this->password)!==$user->password)
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$user->id;
$this->username=$user->username;
$this->setState('blogId',$user->blogs->id);//类似这样子,那每次用户登录就都会记录了
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
之后就可以使用 Yii::app()->user->blogId来访问了