2011-10-30 26 views
0

我有搜索和搜索,但沒有回答我使用Zend框架來創建一個用戶,併成功店Zend的權威性的記錄,因此它們在自動登錄。Zend的創建用戶並自動登錄其在

我有創建用戶工作完美,但成功後,我需要啓動_getAuthAdpater()並簽署用戶英寸

我已經實現了下面的代碼,但它不會將用戶數據存儲在會話中。這是我的功能。

公共職能registerAction()

$proUser = new Application_Model_DbTable_ProUser; 
$userId = $proUser->addProUser($data['email'], $data['name'], $data['password']);if($userId){ 

       // add new row into proBasic 
       $proBasic = new Application_Model_DbTable_proBasic; 
       $proBasic->addProBasic($userId); 

       // add new row into proService 
       $proService = new Application_Model_DbTable_proService; 
       $proService->addProService($userId);     

       // Create auth session for proUser 
       $adapter = $this->_getAuthAdapter(); 
       $adapter->setIdentity($data['email']); 
       $adapter->setCredential($data['password']); 

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

       if ($result->isValid()) { 

        $user = $adapter->getResultRowObject(array(
         'proId', 
         'proName', 
         'proEmail',      
        ));      
        $auth->getStorage()->write($user); 
        return true; 

       } 

       return $this->_redirect('/auth/probasic/'); 
      } 

這裏是_getAuthAdapter()函數:

private function _getAuthAdapter() 
{ 

    $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter()); 
    $authAdapter->setTableName('proUser') 
       ->setIdentityColumn('proEmail') 
       ->setCredentialColumn('proPassword');  

    return $authAdapter;    
} 

我沒有得到任何錯誤,該代碼,但它不是存儲在身份驗證的用戶的詳細信息。我發現了100個如何在Zend中創建登錄/註冊系統的例子,並且他們都沒有自動登錄用戶,所以我想知道如果我正在嘗試做一些不同的事情。

乾杯

J.

回答

2

你並不真的需要驗證他們的身份,如果你註冊後立即創建會話。如果在$proService->addProService($userId)之後用以下代碼替換所有代碼,會發生什麼情況:

$auth = Zend_Auth::getInstance(); 
$auth->getStorage()->write($data['email']); 
相關問題