Answers:
您可以在代码中的任何时候抛出异常:
403:
throw new \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException();
404:
throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpException();
然后,该异常将被DefaultExceptionHtmlSubscriber捕获,并返回/system/403
或/system/404
返回一个子请求,如果您不想显示通用的“拒绝访问”或“未找到”页面,则可以在基本站点设置中对其进行配置。
其他选项取决于代码的放置位置:
从控制器或表单返回403或404响应
如果您在事件订阅者中,请在事件中设置响应。
您绝对不应该直接发送回复。这不会停止代码并产生两个响应,一个已发送,一个由Drupal内核返回。这将导致不可预测的行为。
在页面中,您可以使用:
return new \Symfony\Component\HttpFoundation\RedirectResponse(\Drupal::url('your.module.route.name'));
像:http : //www.drupal8.ovh/en/tutoriels/88/page-redirection-on-drupal-8
或来自发件人:
$form_state->setRedirect('your.module.route.name');
然后配置“ your.module.route.name”的访问权限
如果您不知道如何配置访问权限,请检查:http : //www.drupal8.ovh/en/tutoriels/66/create-a-custom-permission-drupal-8
return new Response('', Response::HTTP_FORBIDDEN);