今天在zf框架下实现了一个用户登录认证的功能,利用了zend_auth组件类来实现。主要是用于数据库认证(本例子用于mysql认证)
主要思路就是:1.利用zend_auth_adapter_dbtable来创建适配器对象
2.通过1中的对象来设置认证表名(即数据库名),设置标记列(数据库表中的某一列如用户名列username),设置凭记列(同样是数据库中的某一列名,如密码列:passwd);
3. 设置要进行验证的标记列的值(通常是读取用户输入的用户名数据)
4. 设置要进行验证的凭记列的值(通常是读取用户输入的密码数据)
5.调用适配器对象的authenticate()方法进行认证并且返回一个zend_auth_result对象
6.调用5中返回的zend_auth_result对象的isValid()方法,判断是否认证成功;
具体代码如下:
前提条件:我的mysql library数据库中的users表里存放了登录需要的数据
先创建数据库适配器:
$params = array('host'=>'127.0.0.1','username'=>'root','password'=>'root','dbname'='library');
$zend_db::factory('PDO_Mysql',$params);
$authadapter = new Zend_Auth_Adapter_DbTable($db);
$authAdapter->setTableName('users');
$authAdapter->setIdentityColumn('username');
$authAdapter->setCredentialColumn('passwd');
$authAdapter->setIdentity($form->getValue('username'));
$authAdapter->setCredential($form->getValue('passwd'));
$result = $authAdapter->authenticate();
$temp = $result->isValid();