现在的位置: 首页 > 综合 > 正文

Zend Framework 中的 Zend_Auth(访问认证与身份持久) .

2018年05月19日 ⁄ 综合 ⁄ 共 1278字 ⁄ 字号 评论关闭

搞了一段时间ZF,发现中文的资料很少,相对来说就是那个ZF中文手机较为全面一些,但还是有些关键的东西没有提高。今天琢磨了一天,终于把这个理论实践了一下,发现ZF比想象中的复杂,当然也强大的多。

这里就讨论一下,数据库认证及身份持久,手册中把持久的过程写的相对较细,可对持久后身份的获取只是提了一下,也怪自己不细心,没太注意看。于是写出来,希望对其他人能有所帮助。晚上的时候把这个认证与持久写了一个Class,如下:

 

class Active_Auth
{
 public static $name = 'adminlogin';
 
 public static function login($username, $password)
 {
  $auth = Zend_Auth::getInstance ();
  $auth->setStorage ( new Zend_Auth_Storage_Session ( Active_Auth::$name ) );
  $db = Zend_Registry::get ( 'db' );
  $authAdapter = new Zend_Auth_Adapter_DbTable ( $db, 'zf_admin', 'ausername', 'apassword', 'md5(?)' );
  $authAdapter->setIdentity ( $username );
  $authAdapter->setCredential ( $password );
  $result = $auth->authenticate ( $authAdapter );
  if ($result->isValid ()) {
   $storage = $auth->getStorage ();
   $storage->write ( $authAdapter->getResultRowObject () );
   return true;
  } else {
   return false;
  }
 }
 public static function isValid()
 {
  $auth = Zend_Auth::getInstance();
  $auth->setStorage(new Zend_Auth_Storage_Session(Active_Auth::$name));
  return $auth->hasIdentity();
 }
 public static function getIdentity()
 {
  $auth = Zend_Auth::getInstance();
  $auth->setStorage(new Zend_Auth_Storage_Session(Active_Auth::$name));
  return $auth->getIdentity();
 }
 public static function logout()
 {
  $auth = Zend_Auth::getInstance();
  $auth->setStorage(new Zend_Auth_Storage_Session(Active_Auth::$name));
  $auth->clearIdentity();
 }
}

引入这个类后,可以通过访问静态方法实现登陆、获取身份、退出登陆等。

抱歉!评论已关闭.