Saya ingin secara program mengarahkan pengguna saya ke halaman "akses terbatas". Saya tahu bahwa saya memerlukan objek "RedirectResponse" untuk pengalihan sederhana, tetapi bagaimana cara menentukan halaman "akses terbatas" default di sini?
12
return new Response('', Response::HTTP_FORBIDDEN);
Jawaban:
Anda bisa melempar pengecualian kapan saja dalam kode Anda:
403:
404:
Pengecualian kemudian ditangkap oleh DefaultExceptionHtmlSubscriber dan subrequest untuk
/system/403
atau/system/404
dikembalikan, 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.
sumber
Ini sepertinya cara yang benar:
sumber
Bangun pengalihan Anda dari rute yang ditolak akses sistem.
Ini membawa Anda ke halaman ditolak akses standar Drupal. Rute didefinisikan
system.routing.yml
dalam 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.
sumber
Dari sebuah halaman, Anda dapat menggunakan:
seperti: http://www.drupal8.ovh/en/tutoriels/88/page-redirection-on-drupal-8
Atau dari dari kirim:
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
sumber