Quero que se o usuário não estiver conectado e visitar qualquer página do meu site, exceto meus roteadores REST VIEWS, eu o redireciono para a página de login no drupal 8, encontrei essas soluções para o drupal 7, mas não encontrei nenhuma solução para o Drupal 8,
8
routes
redirection
event-subscriber
David Mcsmith
fonte
fonte
KernelEvents::REQUEST
evento e, em seguida, definiria a resposta como RedirectResponse para a página de login./user
e, se for anônima, seria necessário/user/login
, mas com o efeito colateral de levar usuários autenticados ao seu perfil de usuário sem dizer a eles que foi negado o acesso à página que estavam procurando .Respostas:
Você pode testar o status de um usuário muito cedo com o assinante de evento em um módulo personalizado que assina KernelEvents :: REQUEST.
Primeiro, você registra o assinante do evento na
mymodule.services.yml
pasta do módulo:Em seguida, adicione
RedirectAnonymousSubscriber.php
seu assinante de evento personalizado em seu módulo na/src/EventSubscriber/
pastafonte
RedirectAnonymousSubscriber.php
, eu atualizo sua resposta.No Drupal 8.3.3, esse código causa um redirecionamento infinito. Corrigi isso adicionando isso.
fonte
Primeiro, crie um serviço para o seu assinante de evento em
module-name.services.yml
Código -
Crie sua própria classe eventsubscriber dentro do
modules/module-name/src/EventSubscriber
diretório:fonte