我对Yii
很新
现在我在Xampp服务器上安装了yii 1.1.13版本。我可以查看"我的Web应用程序"页。
在那里,我可以查看登录表单。现在,我想借助我的用户名和密码登录,该用户名和密码存储在数据库中。我怎么能这样做
我检查了一些教程,但我无法理解。请有人解释一下。
答案 0 :(得分:0)
您需要在数据库中有一个表,用于存储用户和密码数据,例如User
以及与此表对应的模型。模型文件默认存储在protected/models
。
如你所说,你应该注意UserIdentity
课程。将其放在protected/components
中。此方法应具有私有$_id
变量,此变量的getter和负责身份验证的authenticate
方法。检查一下:
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
$record=User::model()->findByAttributes(array('username'=>$this->username));
if($record===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if($record->password!==md5($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$record->id;
$this->setState('title', $record->title);
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getId()
{
return $this->_id;
}
}
那么authenticate
方法会发生什么?您从User
表中搜索记录并将其分配给变量。如果找不到记录,则添加用户名无效的错误。比较密码的if..elseif..else
语句的下一个元素:如果来自DB的密码不等于输入密码的md5函数的哈希值,则添加错误 - 密码错误。 (请记住,在这种情况下,您需要在DB中存储md5哈希密码!)如果没有错误 - 用户输入了正确的数据,您可以设置ID和一些会话信息。
我认为如果您使用该代码修改代码,您将能够将authenticntice与DB存储的数据一起使用。