首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend session和zend auth

Zend session和zend auth
EN

Stack Overflow用户
提问于 2012-01-25 19:21:15
回答 6查看 11.3K关注 0票数 5

我已经通过zend auth建立了一个登录系统,这是代码

代码语言:javascript
复制
// 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');
        }
  }

现在可以正常工作了。user (表)中有user_id (列),其中也有用户名和密码。我需要从这个表中获取特定的user_id,它只需登录并通过

代码语言:javascript
复制
$user_session = new Zend_Session_Namespace('user_session');
$user_session->username = $username;
$user_id->user_id       = $user_id;

这样我就可以根据这个$user_id查询一些信息,并将结果传递到视图(名称)控制面板中

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-25 19:41:16

从存储中获取用户id:

代码语言:javascript
复制
$userInfo = Zend_Auth::getInstance()->getStorage()->read();

echo $userInfo->user_id;
票数 8
EN

Stack Overflow用户

发布于 2012-05-10 02:41:43

虽然这个问题已经得到了回答,但我倾向于比getStorage()->read()链更频繁地使用getIdentity()函数。下面是一些例子。

代码语言:javascript
复制
// 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;
票数 8
EN

Stack Overflow用户

发布于 2012-01-25 19:43:09

您可以按照Teez建议的方式访问数据,也可以直接从Zend_Session_Namespace获取数据。

15.1.3.1。PHP会话中的缺省持久性

默认情况下,Zend_Auth使用PHP为成功的身份验证尝试提供持久的身份存储。在一次成功的身份验证尝试之后,Zend_Auth::authenticate()将身份验证结果中的身份存储到持久存储中。除非另行配置,否则Zend_Auth将使用名为Zend_Auth_Storage_Session的存储类,而后者又使用Zend_Session。相反,可以通过向Zend_Auth::setStorage()提供实现Zend_Auth_Storage_Interface的对象来使用自定义类。

Zend_Auth_Storage_Session使用会话命名空间'Zend_Auth‘。可以通过向Zend_Auth_Storage_Session的构造函数传递不同的值来覆盖此命名空间,该值在内部传递给Zend_Session_Namespace的构造函数。这应该在尝试身份验证之前发生,因为Zend_Auth::authenticate()执行身份的自动存储。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9001847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档