Dengan pelancaran Laravel 5.7, ramai pengguna telah melaporkan masalah dengan penghalaan akses. Berlakunya masalah ini mungkin menyebabkan anda membuang banyak masa semasa proses pembangunan. Untuk membantu anda menyelesaikan masalah ini, artikel ini akan memperkenalkan secara terperinci penyelesaian kepada masalah yang Laravel 5.7 tidak dapat mengakses penghalaan.
Mula-mula kita perlu memahami beberapa perubahan baharu dalam Laravel 5.7, yang mungkin menyebabkan kod sebelumnya tidak berjalan dengan betul. Salah satu perubahan yang paling penting ialah penambahan perisian tengah perlindungan CSRF secara lalai. Perisian tengah ini boleh memastikan bahawa data borang yang diserahkan oleh pengguna datang daripada aplikasi anda dan menghalang aplikasi daripada serangan CSRF.
Perisian tengah perlindungan CSRF sudah wujud dalam Laravel 5.6, tetapi ia tidak didayakan secara lalai. Tetapi dalam Laravel 5.7, pasukan Laravel telah mendayakan perisian tengah ini secara lalai. Oleh itu, dalam Laravel 5.7, anda perlu menambah token CSRF apabila menyerahkan data menggunakan borang.
Penyelesaian:
Terdapat dua cara untuk menyelesaikan masalah Laravel 5.7 tidak dapat mengakses penghalaan. Kaedah pertama ialah menambah token CSRF dalam fail web.php. Kaedah kedua ialah untuk melumpuhkan perisian tengah perlindungan CSRF.
Kaedah 1: Tambahkan token CSRF dalam fail web.php
Kumpulan middleware web digunakan secara lalai dalam RouteServiceProvider.php bagi kod Laravel 5.7, oleh itu, tambahkannya dalam fail web.php Cara paling mudah untuk mencipta token CSRF ialah menggunakan kaedah {{ csrf_field() }}.
Contohnya, jika anda mempunyai laluan yang mengendalikan permintaan POST:
Route::post('/foo', function () {
return 'Hello World';
});
Anda perlu menambah kaedah {{ csrf_field() }} pada borang untuk menjana token CSRF:
Kaedah ini memastikan aplikasi Laravel 5.7 anda boleh mengendalikan permintaan POST seperti biasa.
Kaedah 2: Lumpuhkan perisian tengah perlindungan CSRF
Melumpuhkan perisian tengah perlindungan CSRF ialah cara lain untuk menyelesaikan masalah yang Laravel 5.7 tidak dapat mengakses penghalaan. Walaupun pendekatan ini mungkin mengurangkan sedikit keselamatan aplikasi Laravel anda, ia boleh dilaksanakan jika aplikasi anda tidak berisiko daripada serangan CSRF.
Untuk melumpuhkan perisian tengah perlindungan CSRF, anda perlu menambah URI untuk diabaikan dalam atribut $except kelas VerifyCsrfToken.
Buka fail app/Http/Middleware/VerifyCsrfToken.php dan tambahkan laluan untuk diabaikan dalam atribut $except:
protected $except = [
'your-route-to-ignore'
] ;
Sebagai contoh, katakan anda mahu mengabaikan laluan "daftar":
protected $except = [
'register'
];
Kaedah ini akan memastikan Laravel 5.7 Aplikasi anda boleh mengendalikan semua permintaan secara normal.
Kesimpulan:
Secara amnya, masalah tidak dapat mengakses penghalaan dalam Laravel 5.7 disebabkan terutamanya oleh perisian tengah perlindungan CSRF yang didayakan secara lalai. Oleh itu, jika anda menghadapi masalah ini semasa pembangunan, anda boleh mencuba dua kaedah ini untuk menyelesaikannya. Jika anda ingin melumpuhkan perisian tengah perlindungan CSRF, anda hanya perlu menggunakannya untuk laluan yang tidak melibatkan data sensitif atau penting. Kaedah ini mungkin mengurangkan sedikit keselamatan aplikasi Laravel anda, jadi disyorkan untuk menggunakan kaedah satu untuk memastikan keselamatan aplikasi anda.
Atas ialah kandungan terperinci Laravel 5.7 tidak boleh mengakses penghalaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!