Несколько входов в систему на одной вкладке с использованием Zend Framework - PullRequest
1 голос
/ 11 ноября 2010

Мне нужен код, который позволяет нам делать несколько входов в систему в одном окне, используя Zend Framework. В настоящее время, когда я пытаюсь сделать несколько входов в систему в одном окне, это дает мне ошибку.

Если невозможно выполнить несколько входов в систему в одном окне, можно ли выйти из первой учетной записи при попытке войти в другую учетную запись?

Под многократным входом я подразумеваю вход в систему с использованием двух разных учетных записей в разных вкладках одного и того же браузера.

Код для аутентификации:

$authAdapter = $this->_getAuthAdapter();
$login = $form->getvalue('login'); 

if($auto!="1") 
  $password = md5($form->getvalue('password')); 
else 
  $password = $form->getvalue('password'); 

$authAdapter->setIdentity($login) ->setCredential($password); 
$auth = Zend_Auth::getInstance(); 

try{
  $result = $auth->authenticate($authAdapter); 
} catch (Zend_Exception $e){ 
  $this->view->errorMessage = $e->getMessage(); 
} 

1 Ответ

0 голосов
/ 11 ноября 2010

По умолчанию Zend_Auth сохраняет идентичность, используя стандартный сеанс . Если браузер разделяет сеанс между вкладками (я не уверен, что есть браузер, который этого не делает), то вы не можете аутентифицировать две разные личности.

[Примечание к вкладкам браузера: при тестировании я использовал вкладки «инкогнито» в Chrome для входа в систему дважды (другие браузеры имеют аналогичные функции конфиденциальности). Однако даже тогда Chrome разделяет сеанс на всех вкладках «инкогнито».]

Чтобы разрешить двойной вход, вы можете использовать собственный метод для сохранения личности. Но это, вероятно, будет сложной задачей. Использование какого-либо токена в URI позволило бы приложению различать запросы двух вкладок, предполагая, что вторая вкладка не была открыта первой.

Вы можете выйти из системы исходного пользователя при втором входе в систему, используя что-то вроде этого в своем коде входа:

if($auth->hasIdentity()){
  $auth->clearIdentity()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...