Рейтинг:0

Неправильная страница пользователя загружена после user_login_finalize()/user_logout()

флаг de

У меня есть сторонний пользовательский модуль входа в систему, который вызывает user_login_finalize() после аутентификации и user_logout() при выходе из системы. Обе эти функции работают, за исключением случаев, когда пользователь входит/выходит из пути /user в Drupal, страница загружает версию страницы /user, которая должна была отображаться до входа/выхода из системы. Таким образом, при входе на страницу отображается предупреждение о несанкционированном доступе, которое было сначала, пока страница не будет перезагружена. При выходе из системы на странице отображается информация о профиле пользователя, которая была там, когда пользователь вошел в систему.

Этот код выполняется в подписчике событий для KernelEvents::REQUEST (аутентификация моей организации работает таким образом, что статус аутентификации пользователя может измениться за пределами моего сайта Drupal в любое время, и его необходимо проверить перед загрузкой содержимого).

Я не уверен, связана ли проблема со сторонним перенаправлением входа в систему или с кешем Drupal, но есть ли что-то еще, что нужно очистить или сбросить после использования этих функций? Я использовал их намеренно, чтобы избежать дублирования кода того, что уже есть в Drupal.

Jaypan avatar
флаг de
Похоже на проблему с кэшированием. В частности, кэш анонимных страниц. Попробуйте отключить этот модуль и посмотрите, исчезнет ли проблема. Если это так, вам может потребоваться настроить некоторые контексты кэширования или даже отключить кэширование для этой страницы.
4uk4 avatar
флаг cn
Куда вы вставили этот код? Обычно это выполняется в контроллере или обработчике отправки, возвращающем перенаправление для создания правильной страницы для вновь вошедшего в систему или вышедшего пользователя.
apaderno avatar
флаг us
Когда пользователи выходят из системы, они по-прежнему перенаправляются на /user или URL-адрес, который отображается в адресной строке браузера, отличается, но отображаемая страница является страницей профиля пользователя? В первом случае причиной этому является перенаправление; во втором случае проблема с кешем страниц.
Anton avatar
флаг de
Я обновил описание, чтобы ответить на комментарии/вопросы.Короче говоря, это пользовательский модуль, и я вызываю код в подписчике событий для KernelEvents::REQUEST. Насколько я могу судить, это проблема кэширования страницы /user. Есть ли способ отключить кеш анонимных пользователей только для этой страницы/маршрута?
Рейтинг:1
флаг cn

Этот код выполняется в подписчике событий для KernelEvents::REQUEST (мой аутентификация организации работает таким образом, что статус может ли пользователь аутентифицироваться вне моего сайта Drupal в в любое время и требует проверки перед загрузкой контента).

Если статус аутентификации изменился, установите ответ перенаправления для создания новой страницы после того, как вы создали новый сеанс или уничтожили существующий сеанс с помощью функций пользовательского модуля, которые вы упомянули:

$response = новый RedirectResponse(Url::fromRoute('<current>')->toString());
$event->setResponse($response);

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.