Laravel ialah rangka kerja PHP yang popular, dan pembangunnya memberikan kami sistem penghalaan yang sangat berkuasa. Menggunakan penghalaan dalam Laravel boleh memetakan URL dengan mudah kepada kod logik perniagaan bahagian belakang tertentu, membolehkan kami menulis perkhidmatan API dan halaman Web yang RESTful dengan mudah. Tetapi dalam aplikasi sebenar, kami kadangkala mahu beberapa laluan diakses hanya dalam keadaan tertentu Pada masa ini, fungsi penghalaan tersembunyi yang disediakan oleh Laravel sangat berguna.
Apakah penghalaan tersembunyi Laravel?
Penghalaan tersembunyi Laravel bermakna laluan penghalaan tidak dipaparkan secara langsung dalam definisi penghalaan Laluan hanya boleh diakses melalui parameter tertentu atau memanggil kaedah tertentu. Tujuan penghalaan tersembunyi adalah untuk melindungi beberapa data sensitif, seperti tetapan semula kata laluan, log masuk dan antara muka operasi lain, daripada akses berniat jahat.
Bagaimana untuk melaksanakan penghalaan tersembunyi dalam Laravel?
Terdapat banyak cara untuk melaksanakan penghalaan tersembunyi dalam Laravel Berikut ialah dua kaedah yang biasa digunakan.
Laluan bernama Laravel menyediakan fungsi untuk menentukan alias laluan. Dalam definisi penghalaan, kita boleh menggunakan kaedah "->name()" untuk mentakrifkan alias, contohnya:
Route::get('index', 'HomeController@index')->name('home');
Baris kod ini mentakrifkan alias penghalaan bernama "home", yang sepadan ke laluan 'indeks'.
Apabila memanggil laluan, kami hanya perlu menggunakan alias untuk mendapatkan kesan akses yang sama seperti laluan:
<a href="{{ route('home') }}">Home</a>
Dalam kes ini, pengguna hanya boleh mengklik pada pautan URL . Laluan ini tidak boleh diakses dengan memasukkan laluan URL secara manual.
Laravel menyediakan fungsi middleware (Middleware) untuk memproses permintaan dan respons Kita boleh menggunakan ciri middleware untuk mengawal akses kepada laluan. Pertama, kita perlu mencipta middleware tersuai:
php artisan make:middleware CheckPass
Barisan kod ini akan mencipta kelas middleware bernama CheckPass dalam direktori app/Http/Middleware. Kami boleh mentakrifkan kaedah semakan untuk parameter input dalam kelas ini, contohnya:
class CheckPass { public function handle($request, Closure $next) { if ($request->has('password') && $request->input('password') === 'password') { return $next($request); } return abort(403, 'Unauthorized action.'); } }
Perisian tengah CheckPass ditakrifkan di sini untuk menyemak sama ada parameter kata laluan yang dihantar oleh pengguna ialah "kata laluan". Syarat membenarkan akses, jika tidak, halaman ralat dikembalikan.
Seterusnya, kami menggunakan middleware protect ini dalam definisi laluan:
Route::get('/example', 'ExampleController@showResult')->middleware('protect');
Apabila memanggil laluan, pengguna mesti menghantar parameter bernama "kata laluan" melalui permintaan GET untuk mendapatkan respons yang betul .
Ringkasan
Sistem penghalaan yang disediakan oleh Laravel adalah sangat fleksibel dan mudah digunakan, tetapi dalam senario aplikasi sebenar kita sering memerlukan beberapa logik pemprosesan yang lebih maju, seperti penghalaan tersembunyi Laravel. Kami boleh menggunakan penghalaan bernama atau perisian tengah untuk melaksanakan fungsi ini, yang boleh memberikan pengguna pengalaman yang lebih baik sambil melindungi keselamatan data dan aplikasi kami.
Atas ialah kandungan terperinci Bagaimana untuk menyembunyikan penghalaan dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!