ZF2 ZfcUser, BjyAuthorise, Проблемы с выходом из системы

Выход из веб-приложения, когда:

  1. Двойной щелчок на любой общедоступной ссылке (например, два раза подряд о нас)
  2. Использование ajax для автоматического завершения вызовов (например, с Jquery.autocomplete)
  3. Использование CKeditor и загрузка изображения (KCFinder для загрузки на сервер)
  4. Откройте 2 или более вкладок и быстро нажмите на ссылки в каждой вкладке

Под выходом из системы я подразумеваю, что BJauthorise (инструменты разработчика Zend) видит мои роли (например, member, memberplus и т. Д.) До начала действия.
Если я выполню любое из вышеуказанных действий, zfcuser / bjyauthorise, похоже, потеряет свою сессию / cookie? и я получаю страницу «403 запрещено», отображаемую BJYauthorise.
Вся информация zfcuser отсутствует, и мне нужно снова войти в систему.

Среда:
zf2, zfcuser, bjyautorise + пользовательские маршруты.

У меня есть это в модуле / Member / Module.php

 'Zend\Session\SessionManager' => function ($sm) {
$config = $sm->get('config');
if (isset($config['session'])) {
$session = $config['session'];

$sessionConfig = null;
if (isset($session['config'])) {
$class = isset($session['config']['class'])  ? $session['config']['class'] : 'Zend\Session\Config\SessionConfig';
$options = isset($session['config']['options']) ? $session['config']['options'] : array();
$sessionConfig = new $class();
$sessionConfig->setOptions($options);
}

$sessionStorage = null;
if (isset($session['storage'])) {
$class = $session['storage'];
$sessionStorage = new $class();
}

$sessionSaveHandler = null;
if (isset($session['save_handler'])) {
// class should be fetched from service manager since it will require constructor arguments
$sessionSaveHandler = $sm->get($session['save_handler']);
}

$sessionManager = new SessionManager($sessionConfig, $sessionStorage, $sessionSaveHandler);

if (isset($session['validator'])) {
$chain = $sessionManager->getValidatorChain();
foreach ($session['validator'] as $validator) {
$validator = new $validator();
$chain->attach('session.validate', array($validator, 'isValid'));

}
}
} else {
$sessionManager = new SessionManager();
}
Container::setDefaultManager($sessionManager);
return $sessionManager;
},

Я пытался выяснить, что является причиной этого, и первоначальные мысли направлены на восстановление сеанса. Мой локальный тестовый компьютер относительно загружен (т.е. работает медленно), поэтому я предполагаю, что ZF2 пытается восстановить сеанс, который каким-то образом заблокирован, и затем говорит: «Эй, вы не вошли в систему, я собираюсь очистить сеанс и выкинуть вас из…!’ но это не четкий вывод.

Кто-нибудь знает или имеет какой-либо опыт работы с этой или подобной проблемой «не очень случайных» выходов из системы при попытке получить доступ к их сайту?

Должен ли я смотреть на сессию дальше или я совершенно не в той области?

ОБНОВИТЬ:
Глядя на «сеть» на панели инструментов инструментов разработчика Chrome: в простом примере последовательного щелчка по 2 различным ссылкам в сохраненном сетевом журнале отображаются начальные запрос отменен и следующий запрос (то есть вторая ссылка нажата) показывает 403 запрещенного ответа.
у меня есть 2 ссылки (ссылка A и ссылка B) в области, контролируемой охранником маршрута.
Если я щелкаю ссылку A, и страница начинает процесс запроса / ответа, и я прерываю его, нажимая ссылку B, тогда ссылка A «отменяется», а ссылка B внезапно не аутентифицируется.
Это «отмена» запроса, кажется, является общей темой во всех случаях и является причиной моей дилеммы.
Пожалуйста, помогите в любом случае.
постскриптум Я попытаюсь начать со свежего ZendSkeletonApp / ZfcUser / BJAuthorise и посмотреть, произойдет ли это, но пока не нашел времени, чтобы исследовать это.

0

Решение

Я считаю, что это была человеческая ошибка!
как отмечалось выше, проблема, скорее всего, была связана с Module.php в методе bootstrap ().
Попытка восстановить идентификатор сеанса здесь вызвала ошибку.

//$sm =  $e->getApplication()->getServiceManager();
//$session = $sm->get('Zend\Session\SessionManager');
//$session->start();
//var_dump($_SESSION);

$container = new Container('wadmin');
if (!isset($container->adminId)) {
//$session->regenerateId(true);
$container->adminId = null;
}

Опять же, человеческая ошибка, и я понял, только когда я начал работать над разделом администратора.
Я не верю, что этот пост поможет кому-то, так что, вероятно, лучше отказаться от него …?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]