Установка и расширение времени жизни сеанса с использованием zend_auth
-
30-09-2019 - |
Вопрос
Я использую Zend_auth для одного из моих проектов, но до сих пор не выяснил, как установить время на всю жизнь для сеанса, или как расширить его (позволяет сказать, что он должен работать 5 минут и должен сбросить к этому, когда пользователь делает действие ), вот мой код инициализации:
$authAdapter = new Zend_Auth_Adapter_DbTable($this->_model->pdo);
$authAdapter->setTableName('normal_folks')
->setIdentityColumn('username')
->setCredentialColumn('password');
$post = $this->_request->getPost();
$authAdapter->setIdentity($post['username'])
->setCredential($post['password']);
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
if($result->isValid())
{
$userInfo = $authAdapter->getResultRowObject(null, 'password');
$authStorage = $auth->getStorage();
$authStorage->write($userInfo);
if(strlen($post['refferer']) > 1){
header("Location: ".$post['refferer']);
}elseif(strlen($this->_request->getParam('ref_action')) > 1){
Zend_Controller_Action::_forward($this->_request->getParam('ref_action'),"admin",null,null);
}else{
Zend_Controller_Action::_forward("index","admin",null,null);
}
}
Арат это, как я проверю, зарегистрирован ли пользователь:
if(Zend_Auth::getInstance()->hasIdentity()){
echo "Woho!";
}else{
die("invalid-identity");
}
Это, вероятно, прямо там передо мной, но я просто не могу понять это, помочь? Пожалуйста? Красиво, пожалуйста? : D.
Решение
Состояние аутентификации хранится в зарегистрированном хранилище аутента. По умолчанию это Zend_Session
. Отказ Ты сможешь Установите время истечения Zend_Auth
пространство имен, например,
$namespace = new Zend_Session_Namespace('Zend_Auth');
$namespace->setExpirationSeconds(300);
Вы также можете глобально настроить Zend_Session
через
Zend_Session::setOptions(array(
'cookie_lifetime' => 300,
'gc_maxlifetime' => 300));
Другие советы
Если вы используете разное пространство имен для сеанса Zend_auth, вы можете сделать это так:
$auth = Zend_Auth::getInstance ();
$auth->setStorage ( new Zend_Auth_Storage_Session ( 'user' ) );
$namespace = new Zend_Session_Namespace('user');
$namespace->setExpirationSeconds(7200); // 2 hours