Chciałbym programowo przekierować moich użytkowników na domyślną stronę „dostęp ograniczony”. Wiem, że potrzebuję obiektu „RedirectResponse” dla prostego przekierowania, ale jak mogę tutaj określić domyślną stronę „z ograniczonym dostępem”?
12
return new Response('', Response::HTTP_FORBIDDEN);
Odpowiedzi:
Możesz zgłosić wyjątek w dowolnym momencie kodu:
403:
404:
Wyjątek jest następnie przechwytywany przez DefaultExceptionHtmlSubscriber i zwracane jest zapytanie
/system/403
lub żądanie/system/404
, które można skonfigurować w podstawowych ustawieniach witryny, jeśli nie chcesz wyświetlać ogólnej strony „odmowa dostępu” lub „nie znaleziono”.Inne opcje zależą od tego, gdzie znajduje się kod:
Zwraca odpowiedź 403 lub 404 ze sterownika lub formularza
Ustaw odpowiedź w zdarzeniu, jeśli jesteś subskrybentem wydarzenia.
Nigdy nie powinieneś wysyłać odpowiedzi bezpośrednio. Nie zatrzymuje to kodu i generuje dwie odpowiedzi, jedną wysłaną i jedną zwróconą przez jądro Drupala. Spowoduje to nieprzewidziane zachowanie.
źródło
Wydaje się, że to właściwy sposób:
źródło
Zbuduj przekierowanie z trasy, do której system nie ma dostępu.
Spowoduje to przejście do standardowej strony odmowy dostępu Drupal. Trasa jest zdefiniowana
system.routing.yml
w rdzeniu.Najlepsza odpowiedź da ci odmowę dostępu odmówionego dostępu, co może być tym, czego szukasz. Jeśli chcesz, aby Twój interfejs Drupal był wyświetlany, użyj powyższego.
źródło
Na stronie możesz użyć:
jak: http://www.drupal8.ovh/en/tutoriels/88/page-redirection-on-drupal-8
Lub od z:
Następnie skonfiguruj uprawnienia dostępu do „your.module.route.name”
Jeśli nie wiesz, jak skonfigurować uprawnienia dostępu, sprawdź: http://www.drupal8.ovh/en/tutoriels/66/create-a-custom-permission-drupal-8
źródło