2011-09-09 71 views
0

我已经创建了登录表单,我可以通过一个表进行身份验证,我是否甚至需要使用Zend_Auth?我在哪里可以找到实现Zend_Auth的最佳方式?

在哪里可以找到实现Zend_Auth的最好方法是什么?

由于

+1

你的意思是实现了Zend_Auth_Adapter_Interface吧?\ – Corbin

+0

如果你的经验是像我这样的事情,你应该找到这样做的至少123种完全不同的最佳途径。 – PurplePilot

+0

我的回答很好;) http://stackoverflow.com/questions/2046608/practical-zend-acl-zend-auth-implementation-and-best-practices – SMka

回答

1

我使用下面的方法来验证:

function authenticate ($data) 
{ 
    $db = \Zend_Db_Table::getDefaultAdapter(); 
    $authAdapter = new \Zend_Auth_Adapter_DbTable($db); 

    $authAdapter->setTableName('usuarios2'); 
    $authAdapter->setIdentityColumn('user'); 
    $authAdapter->setCredentialColumn('password'); 
    $authAdapter->setCredentialTreatment('MD5(?) and active = 1'); 


    $authAdapter->setIdentity($data['user']); 
    $authAdapter->setCredential($data['password']); 

    $auth = \Zend_Auth::getInstance(); 
    $result = $auth->authenticate($authAdapter); 

    if ($result->isValid()) { 

     if ($data['public'] == "1") { 
      \Zend_Session::rememberMe(1209600); 
     } else { 
      \Zend_Session::forgetMe(); 
     } 

     return TRUE; 

    } else { 

     return FALSE; 

    } 
} 

$数据是从登录表单的发布请求,从控制器我称这样的功能: 的authenticate($这 - > _请求 - >的getPost())

在任何行动,如果你想验证用户的身份,你只是:

$auth = Zend_Auth::getInstance(); 
if ($auth->hasIdentity()) { 
    $identity = $auth->getIdentity(); //this is the user in my case 
} 

在登录表单我有一个复选框(名为公众)如果检查认证信息将被保存在cookie otherwhise它会在用户关闭浏览器会话(Zend_Session :: forgetMe())

被删除

这是对auth过程的快速回顾。

相关问题