Я хочу, чтобы, если пользователь не вошел в систему и не посетил какую-либо страницу моего сайта, кроме маршрутизаторов REST VIEWS, я перенаправил его / ее на страницу входа в drupal 8, я нашел это решение для drupal 7, но не нашел никакого решения для Drupal 8,
8
routes
redirection
event-subscriber
Дэвид Максмит
источник
источник
KernelEvents::REQUEST
событие, а затем установить ответ на RedirectResponse для страницы входа./user
а затем, если они будут анонимными, это приведет к ним/user/login
, но с побочным эффектом перехода аутентифицированных пользователей в их профили пользователей, не сообщая им, что им было отказано в доступе к странице, которую они искали. ,Ответы:
Вы можете проверить статус пользователя очень рано с подписчиком на событие в пользовательском модуле, который подписывается на KernelEvents :: REQUEST.
Сначала вы регистрируете подписчика на события
mymodule.services.yml
в папке вашего модуля:Затем добавьте
RedirectAnonymousSubscriber.php
для своего пользовательского события подписчика в свой модуль в/src/EventSubscriber/
папке.источник
RedirectAnonymousSubscriber.php
, я обновлю твой ответ.На Drupal 8.3.3 этот код вызывает бесконечное перенаправление. Я исправил это, добавив это вместо этого.
источник
Сначала создайте сервис для вашего подписчика
module-name.services.yml
Код -
Создайте свой собственный класс eventsubscriber внутри
modules/module-name/src/EventSubscriber
каталога:источник