【问题标题】:Zend Sessions getting mixed upZend Sessions 搞混了
【发布时间】:2010-03-09 16:58:57
【问题描述】:

我目前正在处理 Zend Framework 应用程序的登录,我正在使用数据库适配器结合 Zend_Auth 和 Zend_Session(如 Zend Framework 手册中所述)。

我已经为会议制作了一个资源:

class DC_Resource_DbSession extends Zend_Application_Resource_ResourceAbstract{

public function init(){        
}

public function setadapter($value){
    $this->dbAdapter = $value;
}

public function setSession($adapter){
//put your code here
    $config = array(
    'name'           => 'sessions',
    'primary'        => 'id',
    'modifiedColumn' => 'modified',
    'dataColumn'     => 'data',
    'lifetimeColumn' => 'lifetime',
    'db'             => $adapter
    );
    Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
    Zend_Session::setOptions(array('name'=>'MY_SESSION_NAME'));
    Zend_Session::start();
}
}

Zend Auth 然后使用会话来存储一些基本的身份验证信息。

但是,在测试登录(来自同一 IP)时,如果我们办公室的一个用户登录,而另一个用户访问该站点,他们将作为该用户登录!!!谁能帮我弄清楚他们为什么要使用彼此的会话?

【问题讨论】:

  • 您是否也在同一台浏览器/计算机上进行测试?
  • @Vladimir: $auth = Zend_Auth::getInstance(); $authAdapter = new Zend_Auth_Adapter_DbTable($db); $authAdapter->setTableName('users') ->setIdentityColumn('email') ->setCredentialColumn($password_col); $authAdapter->setIdentity($email); $authAdapter->setCredential($pass_hash); $result = $auth->authenticate($authAdapter); if($result->isValid()==true) { $data = $authAdapter->getResultRowObject(null,'password'); $auth->getStorage()->write($data);
  • @Chris 最初是的,但现在在主机上进行测试(即多个 IP、浏览器)我还注意到没有任何表数据包含对浏览器 cookie ID 的引用

标签: zend-framework authentication session


【解决方案1】:

DOH!!!! 我卑微而屈辱的道歉。 id 列数据类型已被我们的迁移人员设置为 INT - 显然它需要是 VARCHAR.... 打自己的脸……

【讨论】:

    猜你喜欢
    • 2010-12-29
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2017-02-09
    • 2020-12-30
    • 2012-07-05
    • 2014-05-20
    • 1970-01-01
    相关资源
    最近更新 更多