Zend会话和zend auth

Faw*_*oor 5 zend-framework zend-auth zend-session

我通过zend auth创建了一个登录系统,这里是代码

// userAuthentication
   public function authAction(){
       $request     = $this->getRequest();
       $registry    = Zend_Registry::getInstance();
       $auth        = Zend_Auth::getInstance(); 
       $DB = $registry['DB'];
           $authAdapter = new Zend_Auth_Adapter_DbTable($DB);
               $authAdapter->setTableName('user')
                            ->setIdentityColumn('user_name')
                            ->setCredentialColumn('user_password');

      $username = $request->getParam('username');
      $password = $request->getParam('password');
      $authAdapter->setIdentity($username);
      $authAdapter->setCredential($password);
      $result = $auth->authenticate($authAdapter);

      if($result->isValid()){
           $data = $authAdapter->getResultRowObject(null,'password');
           $auth->getStorage()->write($data);
           $this->_redirect('/login/controlpannel');
       }else{
           $this->_redirect('/login/login');
        }
  }
Run Code Online (Sandbox Code Playgroud)

这项工作现在很好.用户(表)中也有user_id(列),其中也有用户名和密码.我需要从这个表中获取特定的user_id,只需登录并将其放入会话中

$user_session = new Zend_Session_Namespace('user_session');
$user_session->username = $username;
$user_id->user_id       = $user_id;
Run Code Online (Sandbox Code Playgroud)

这样我就可以查询这个$ user_id的一些信息,并将结果传递给view(name)controlpanel

小智 8

从存储中获取用户ID:

$userInfo = Zend_Auth::getInstance()->getStorage()->read();

echo $userInfo->user_id;
Run Code Online (Sandbox Code Playgroud)


小智 8

虽然这已经得到了解答,但我倾向于getIdentity()getStorage()->read()链更频繁地使用该功能.以下示例.

// to check if authenticated
Zend_Auth::getInstance()->hasIdentity();

// to actually get the details from storage
Zend_Auth::getInstance()->getIdentity()->user_id;

// if I need to use the identity over and over
$identity = Zend_Auth::getInstance()->getIdentity();
$userId = $identity->user_id;
Run Code Online (Sandbox Code Playgroud)