虾米窝窝 -- » Zend学习杂谈–Zend_Auth身份认证
Subscribe RSS
Zend学习杂谈–Zend_Auth身份认证 08月 28

用户表:

SQL代码
  1. CREATE TABLE `user` (  
  2. `uid` SMALLINT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,  
  3. `username` VARCHAR( 20 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ,  
  4. `passwordCHAR( 32 ) NOT NULL ,  
  5. `role` ENUM( ‘user’’staff’‘admin’ ) NOT NULL ,  
  6. `truename` VARCHAR( 20 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ,  
  7. INDEX (`role` , `truename` ) ,  
  8. UNIQUE (`username`)  
  9. ) ENGINE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci COMMENT = ‘用户表’

数据库链接文件:
./Lib/Adapter.php

PHP代码
  1. <?php  
  2. $adapter = Zend_Db::factory(‘PDO_MYSQL’array(    ‘host’ => ‘localhost’,  
  3.                                         ‘username’ => ‘root’,  
  4.                                         ‘password’ => ‘root’,  
  5.                                         ‘dbname’ => ‘text’));  
  6. $adapter->query(’set names gbk;’);  
  7. Zend_Registry::set(‘Db’$adapter);  

使用Zend_Auth进行身份认证:

PHP代码
  1. <?php  
  2. require ‘./Zend/Loader.php’;  
  3. function __autoload($class)  
  4. {  
  5.     Zend_Loader::loadClass($class);  
  6. }  
  7. //以上为包含文件  
  8. $auth = Zend_Auth::getInstance();//->setStorage(new Zend_Auth_Storage_Session(’Zend_Auth’));  
  9. //身份的持久是自动发生的,因此此举等于$auth = Zend_Auth::getInstance()->setStorage(new Zend_Auth_Storage_Session(’Zend_Auth’));  
  10. if($auth->hasIdentity())  
  11. {  
  12.       echo ‘已经登录过了!<br/>’;  
  13.     $session = $auth->getStorage()->read();  
  14.       echo ‘显示用户组: ’ . $auth->getStorage()->read()->role . ‘<br/>’;  
  15.       return;  
  16. }  
  17.   
  18. //若没有登录则完成登录(下面操作)  
  19. require ‘./Lib/Adapter.php’;  
  20. $auth_adapter = new Zend_Auth_Adapter_DbTable(Zend_Registry::get(‘Db’), ‘user’‘username’‘password’‘md5(?)’);  
  21. $result = $auth->authenticate($auth_adapter->setIdentity(‘zhangsilly’)->setCredential(‘123456789′));  
  22. $auth->getStorage()->write($auth_adapter->getResultRowObject(null, ‘password’));  
  23. echo ‘登录完毕<br/>’;  
  24. echo ‘显示用户组: ’ . $auth->getStorage()->read()->role . ‘<br/>’;   


注意:$auth_adapter = new Zend_Auth_Adapter_DbTable(Zend_Registry::get(‘Db’), ‘user’, ‘username’, ‘password’, ‘md5(?)’); 这一句,如果采用和手册一样的写法$credentialTreatment 给 md5    认证是无法成功的!

Category: PHP&MySQL  | 标签: , , , ,  | 954次阅读
你可以通过RSS 2.0来关注此文章的评论. 也可以留言或者从你的主页trackback.
留言

XHTML: 你可以使用以下的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>