Jawaban:
Anda bisa melempar pengecualian kapan saja dalam kode Anda:
403:
throw new \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException();
404:
throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpException();
Pengecualian kemudian ditangkap oleh DefaultExceptionHtmlSubscriber dan subrequest untuk /system/403atau /system/404dikembalikan, yang dapat Anda konfigurasi di pengaturan situs dasar jika Anda tidak ingin menampilkan halaman "akses ditolak" atau "tidak ditemukan" generik.
Opsi lain bergantung pada tempat kode ditempatkan:
Kembalikan respons 403 atau 404 dari pengontrol atau formulir
Tetapkan respons dalam suatu acara jika Anda berada dalam pelanggan acara.
Yang tidak boleh Anda lakukan adalah mengirim respons secara langsung. Ini tidak menghentikan kode dan menghasilkan dua tanggapan, satu Anda telah mengirim dan satu lagi dikembalikan oleh kernel Drupal. Ini akan menghasilkan perilaku yang tidak terduga.
Bangun pengalihan Anda dari rute yang ditolak akses sistem.
$url = Url::fromRoute('system.403');
$response = new RedirectResponse($url->toString());
Ini membawa Anda ke halaman ditolak akses standar Drupal. Rute didefinisikan system.routing.ymldalam inti.
Jawaban teratas akan memberi Anda Access tampak ditolak berbasis browser Ditolak, yang mungkin apa yang Anda cari. Jika Anda ingin tampilan Drupal UI Anda, gunakan di atas.
Dari sebuah halaman, Anda dapat menggunakan:
return new \Symfony\Component\HttpFoundation\RedirectResponse(\Drupal::url('your.module.route.name'));
seperti: http://www.drupal8.ovh/en/tutoriels/88/page-redirection-on-drupal-8
Atau dari dari kirim:
$form_state->setRedirect('your.module.route.name');
Kemudian konfigurasikan izin akses 'your.module.route.name'
Jika Anda tidak tahu cara mengkonfigurasi izin akses, periksa: http://www.drupal8.ovh/en/tutoriels/66/create-a-custom-permission-drupal-8
return new Response('', Response::HTTP_FORBIDDEN);