Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk menyembunyikan penghalaan dalam laravel

Bagaimana untuk menyembunyikan penghalaan dalam laravel

PHPz
PHPzasal
2023-04-14 16:54:08601semak imbas

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.

  1. Menggunakan laluan bernama

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(&#39;home&#39;) }}">Home</a>

Dalam kes ini, pengguna hanya boleh mengklik pada pautan URL . Laluan ini tidak boleh diakses dengan memasukkan laluan URL secara manual.

  1. Menggunakan middleware

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn