【发布时间】: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