Golang ialah bahasa pengaturcaraan berbilang paradigma Kebanyakan aplikasi golang perlu melaksanakan pengesahan pengguna dan mengurus sesi pengguna. Untuk memastikan kebolehpercayaan dan keselamatan proses ini, sesi perlu disimpan di bahagian pelayan dan diselaraskan dengan pelanggan.
Untuk melaksanakan matlamat ini, komuniti golang giat membangunkan dan mempromosikan perpustakaan pengurusan sesi. Artikel ini akan memperkenalkan cara menggunakan golang untuk melaksanakan pengurusan sesi dan menunjukkannya dengan contoh kod.
Untuk melaksanakan pengurusan sesi dalam golang, kita perlu menggunakan rangka kerja web dalam golang. Rangka kerja web memberikan kami banyak fungsi dan kaedah luar biasa, menjadikan pengurusan sesi sangat mudah.
Rangka kerja web Golang biasanya menyediakan fungsi berikut:
gorila/sesi ialah perpustakaan pengurusan sesi lanjutan sumber terbuka yang boleh digunakan dengan mudah dalam golang. gorila/sesi membolehkan kami menyimpan data sesi dalam ingatan, dalam kuki, atau menyimpannya dalam pangkalan data. Antaranya, kaedah kuki adalah kaedah yang paling biasa digunakan Ia boleh menyimpan maklumat pengesahan identiti pengguna dengan mudah di sisi penyemak imbas, dan menyediakan langkah keselamatan untuk mengelakkan gangguan dan pemalsuan kuki.
Berikut ialah contoh menggunakan gorila/sesi untuk melaksanakan pengurusan sesi:
package main import ( "fmt" "net/http" "github.com/gorilla/mux" "github.com/gorilla/session" ) var ( // 初始化 session 存储 // 存储指定保存在本地的文件系统,其他存储方式参见 session.NewCookieStore 和 session.NewMemcacheStore store = session.NewFilesystemStore("", []byte("session-key")) ) func home(w http.ResponseWriter, r *http.Request) { // 获取会话数据 session, _ := store.Get(r, "session-name") // 读取会话值,如果不存在,则添加一个默认值 if stats, ok := session.Values["pageviews"]; !ok { session.Values["pageviews"] = 0 } else { session.Values["pageviews"] = stats.(int) + 1 } // 更新cookie session.Save(r, w) // 写响应 fmt.Fprintf(w, "Page views: %v", session.Values["pageviews"]) } func main() { r := mux.NewRouter() r.HandleFunc("/", home) http.ListenAndServe(":8080", r) }
Dalam contoh di atas, kami mula-mula mengimport perpustakaan gorila/mux dan gorila/sesi. Kemudian kedai sesi baharu dicipta dan kunci "nama sesi" dikaitkan dengan semua nilai. Kami membaca nilai sedia ada sesi dengan menghubungi kedai.Dapatkan fungsi, kemudian kemas kini dan simpan semula ke kedai sesi.
Akhir sekali, kami mengaitkan fungsi pengendali permintaan di rumah dengan laluan URL "/" dan mendengar permintaan daripada port tempatan 8080.
Pustaka gorila/sesi menyediakan kami mekanisme keselamatan sesi berasaskan kuki dan juga memastikan integriti data sesi. dan kerahsiaan. Pustaka sesi tidak bergantung pada mekanisme kuki penyemak imbas, tetapi meletakkannya dalam respons HTTP dan menghantarnya kepada klien melalui pengepala Kuki Set HTTP.
Namun, apabila menggunakan perpustakaan gorila/sesi, kami perlu melindungi kuki daripada gangguan dan pemalsuan oleh pelanggan. Untuk melakukan ini, kita perlu melakukan dua perkara berikut:
Rangka kerja web Golang memberikan kami banyak fungsi dan kaedah luar biasa, menjadikan pengurusan sesi sangat mudah. Dalam artikel ini, kami memperkenalkan cara untuk melaksanakan pengurusan sesi dengan mudah menggunakan perpustakaan gorila/sesi, tetapi adalah penting untuk ambil perhatian bahawa kami perlu memastikan sesi kami selamat. Dalam penggunaan sebenar, kita harus membaca dokumentasi dengan teliti, memahami cara setiap perpustakaan berfungsi, dan memastikan keselamatannya.
Atas ialah kandungan terperinci Cara menggunakan golang untuk melaksanakan pengurusan sesi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!