Apabila melaksanakan pengesahan pengguna dalam aplikasi web, selalunya perlu mengecualikan laluan tertentu daripada memerlukan kebenaran. Artikel ini meneroka cara untuk mencapai pengesahan khusus laluan menggunakan Negroni dengan Httprouter.
Pernyataan Masalah
Pelayan web menggunakan Httprouter dan Negroni, dengan pengesahan pengguna dikendalikan oleh OAuth. Token disimpan dalam sesi yang disulitkan, dan perisian tengah digunakan untuk mengesahkan kewujudan token. Walau bagaimanapun, beberapa laluan, seperti halaman log masuk, harus memintas perisian tengah pengesahan ini. Cabarannya terletak pada mengecualikan laluan tertentu daripada middleware tanpa menjejaskan kebolehskalaan.
Penyelesaian
Untuk mencipta middleware khusus laluan, kuncinya ialah mencipta contoh Negroni yang berasingan untuk setiap laluan. Ini membenarkan kawalan berbutir ke atas perisian tengah yang digunakan untuk setiap titik akhir.
Sebagai contoh, pertimbangkan coretan kod berikut:
router := httprouter.New() router.Handler("GET", "/login", negroni.New(negroni.HandlerFunc(loginHandler))) router.Handler("GET", "/", negroni.New(authenticator.Get(), negroni.HandlerFunc(indexHandler))) server := negroni.Classic() server.UseHandler(router) server.Use(sessions.Sessions("example-web-dev", cookiestore.New([]byte("some secret")))) server.Run(":3000")
Dalam contoh ini, /login menggunakan tika Negroni yang berasingan tanpa perisian tengah pengesahan, manakala / menggunakan kedua-dua sesi dan perisian tengah pengesahan. Dengan menggunakan berbilang kejadian Negroni, pengesahan khusus laluan boleh dicapai dengan berkesan dan berskala.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengesahan Khusus Laluan di Negroni dengan Httprouter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!