Chcę, jeśli użytkownik nie zaloguje się i nie wejdzie na żadną stronę mojej witryny oprócz routerów REST VIEWS Przekieruję go na stronę logowania w Drupal 8, znalazłem to rozwiązanie dla Drupal 7, ale nie znalazłem żadnego rozwiązania dla Drupal 8,
8
routes
redirection
event-subscriber
David Mcsmith
źródło
źródło
KernelEvents::REQUEST
zdarzeniu, a następnie ustawiłeś odpowiedź na odpowiedź RedirectResponse dla strony logowania./user
a jeśli są anonimowi, zabierze ich to/user/login
, ale z efektem ubocznym przeniesienia uwierzytelnionych użytkowników do ich profilu użytkownika bez informowania ich, że odmówiono im dostępu do strony, której szukali .Odpowiedzi:
Możesz bardzo wcześnie przetestować status użytkownika z subskrybentem zdarzenia w niestandardowym module, który subskrybuje KernelEvents :: REQUEST.
Najpierw zarejestruj subskrybenta zdarzenia w
mymodule.services.yml
folderze modułu:Następnie dodaj
RedirectAnonymousSubscriber.php
niestandardowego subskrybenta zdarzenia w swoim module w/src/EventSubscriber/
folderze.źródło
RedirectAnonymousSubscriber.php
, zaktualizuję twoją odpowiedź.W Drupal 8.3.3 ten kod powoduje niekończące się przekierowanie. Naprawiłem to, dodając zamiast tego.
źródło
Najpierw utwórz usługę dla subskrybenta wydarzenia w
module-name.services.yml
Kod -
Utwórz własną klasę subskrybentów zdarzeń w
modules/module-name/src/EventSubscriber
katalogu:źródło