Respuestas:
Puede lanzar una excepción en cualquier punto de su código:
403:
throw new \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException();
404:
throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpException();
La excepción es detectada por DefaultExceptionHtmlSubscriber y se devuelve una subrequest para /system/403
o que /system/404
se devuelve, que puede configurar en la configuración básica del sitio si no desea mostrar una página genérica de "acceso denegado" o "no encontrado".
Otras opciones dependen de dónde se coloca el código:
Devuelve una respuesta 403 o 404 de un controlador o un formulario
Establezca una respuesta en un evento si está suscrito a un evento.
Lo que nunca debe hacer es enviar una respuesta directamente. Esto no detiene el código y produce dos respuestas, una que ha enviado y otra devuelta por el núcleo de Drupal. Esto dará como resultado un comportamiento impredecible.
Cree su redirección desde la ruta de acceso denegado del sistema.
$url = Url::fromRoute('system.403');
$response = new RedirectResponse($url->toString());
Esto lo lleva a la página de acceso denegado de Drupal estándar. La ruta se define system.routing.yml
en el núcleo.
La respuesta principal le dará un acceso denegado basado en el acceso denegado, que puede ser lo que está buscando. Si desea que se muestre su IU de Drupal, use lo anterior.
Desde una página, puede usar:
return new \Symfony\Component\HttpFoundation\RedirectResponse(\Drupal::url('your.module.route.name'));
como: http://www.drupal8.ovh/en/tutoriels/88/page-redirection-on-drupal-8
O de un de enviar:
$form_state->setRedirect('your.module.route.name');
Luego configure el permiso de acceso de 'your.module.route.name'
Si no sabe cómo configurar el permiso de acceso, consulte: http://www.drupal8.ovh/en/tutoriels/66/create-a-custom-permission-drupal-8
return new Response('', Response::HTTP_FORBIDDEN);