Pengurusan sesi dan aplikasinya dalam rangka kerja Gin
Rangka kerja Gin ialah rangka kerja web ringan yang dibangunkan menggunakan bahasa Go dan mempunyai kelebihan kecekapan, kemudahan penggunaan, fleksibiliti dan kelebihan lain. Dalam pembangunan aplikasi web, pengurusan sesi adalah topik yang sangat penting. Ia boleh digunakan untuk menyimpan maklumat pengguna, mengesahkan identiti pengguna, mencegah serangan CSRF, dsb. Artikel ini akan memperkenalkan mekanisme pengurusan sesi dan aplikasinya dalam rangka kerja Gin.
1. Mekanisme pengurusan sesi
Dalam rangka kerja Gin, pengurusan sesi dilaksanakan melalui perisian tengah. Rangka kerja Gin menyediakan pakej sesi, yang merangkumi operasi yang diperlukan untuk pengurusan sesi. Sebelum menggunakan pakej sesi, anda perlu memasangnya terlebih dahulu Masukkan arahan berikut dalam terminal:
go get github.com/gin-contrib/sessions
Pakej sesi menyediakan empat kaedah pengurusan sesi: Kuki, storan memori, storan fail dan storan Redis. Antaranya, storan memori dan storan fail adalah lalai, dan storan Redis perlu memasang pakej redis-go-driver dan mengimport pakej dalam kod. Berikut menggunakan kaedah Kuki sebagai contoh untuk memperkenalkan pelaksanaan pengurusan sesi.
- Buat perisian tengah sesi
package main import ( "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() // 设置会话中间件 store := cookie.NewStore([]byte("secret")) router.Use(sessions.Sessions("mysession", store)) router.GET("/set", setHandler) router.GET("/get", getHandler) router.Run(":8080") } func setHandler(c *gin.Context) { session := sessions.Default(c) session.Set("user", "John") session.Save() c.String(200, "Session saved.") } func getHandler(c *gin.Context) { session := sessions.Default(c) user := session.Get("user") c.String(200, "User is %v.", user) }
Dalam kod di atas, kami mencipta perisian tengah sesi penyimpanan kuki dan mengikatnya pada enjin Gin. Antaranya, parameter pertama "mysession" mewakili nama sesi, dan parameter kedua []bait ("rahsia") ialah kunci, yang digunakan untuk menyulitkan nilai dalam kuki. Dalam setHandler, kami menggunakan kaedah session.Set() untuk menetapkan pasangan nilai kunci, dan kemudian memanggil kaedah session.Save() untuk menyimpan sesi. Dalam getHandler, kami menggunakan kaedah session.Get() untuk mendapatkan maklumat pengguna dan mengeluarkannya dalam respons.
- Pengurusan sesi ujian
Masukkan arahan berikut dalam terminal untuk memulakan perkhidmatan:
go run main.go
Masukkan alamat berikut dalam penyemak imbas:
http://localhost:8080/set
Kemudian masukkan:
http://localhost:8080/get
Anda boleh melihat maklumat respons ialah:
User is John.
Ini menunjukkan bahawa kami berjaya mencipta sesi dan menyimpan maklumat pengguna.
2. Aplikasi pengurusan sesi
Dalam aplikasi web, pengurusan sesi biasanya digunakan dalam senario berikut:
- Pengesahan pengguna
Pengesahan pengguna ialah salah satu senario yang paling biasa dalam aplikasi web Ia digunakan untuk menentukan sama ada pengguna dilog masuk dan sama ada pengguna mempunyai hak untuk mengakses sumber tertentu. Dalam rangka kerja Gin kami boleh menyimpan maklumat pengguna dalam sesi dan menyemaknya di mana sahaja pengesahan diperlukan. Berikut ialah contoh pengesahan pengguna yang mudah:
func authHandler(c *gin.Context) { session := sessions.Default(c) user := session.Get("user") if user == nil { c.Redirect(http.StatusFound, "/login") return } // 验证用户身份 if user != "admin" { c.AbortWithStatus(http.StatusUnauthorized) return } c.String(200, "Hello, admin.") }
Dalam kod di atas, kami mula-mula menggunakan kaedah session.Get() untuk mendapatkan maklumat pengguna, dan jika pengguna tidak log masuk, ubah hala ke halaman log masuk . Jika pengguna log masuk, sahkan bahawa mereka adalah pentadbir. Jika ia adalah pentadbir, "Helo, pentadbir adalah output, jika tidak 401 Tanpa Kebenaran dikembalikan.
- Cegah serangan CSRF
Pemalsuan Permintaan Merentas Tapak (pendek kata CSRF) ialah kaedah serangan web biasa yang mengeksploitasi mekanisme Kuki pelayar, memalsukan permintaan untuk mencapai tujuan serangan . Dalam rangka kerja Gin, kita boleh menggunakan sesi untuk menghalang serangan CSRF. Khususnya, pada setiap penyerahan borang, kami menambah medan csrf_token pada borang dan kemudian menyimpan medan dalam sesi. Pada setiap permintaan berikutnya, kami boleh menyemak sama ada token itu konsisten dengan apa yang disimpan dalam sesi. Berikut ialah contoh pertahanan CSRF yang mudah:
func csrfHandler(c *gin.Context) { session := sessions.Default(c) token := session.Get("csrf_token") if token == nil || token != c.PostForm("csrf_token") { c.AbortWithStatus(http.StatusBadRequest) return } // 处理表单提交 c.String(200, "Form submitted.") } func formHandler(c *gin.Context) { session := sessions.Default(c) token := uuid.New().String() session.Set("csrf_token", token) session.Save() c.HTML(http.StatusOK, "form.html", gin.H{ "csrf_token": token, }) }
Dalam kod di atas, kami mula-mula membandingkan nilai csrf_token dalam borang dengan nilai token yang disimpan dalam sesi. Jika ia tidak konsisten, kod status 400 Bad Request dikembalikan. Jika ia konsisten, penyerahan borang diproses dan "Borang diserahkan ialah output." Apabila borang dimuatkan, kami menggunakan pakej uuid untuk menjana nilai token unik, kemudian menyimpan nilai dalam sesi, dan akhirnya mengembalikan halaman borang kepada pengguna.
3. Ringkasan
Dalam artikel ini, kami memperkenalkan mekanisme pengurusan sesi dan aplikasinya dalam rangka kerja Gin. Pengurusan sesi ialah topik penting dalam pembangunan aplikasi web Ia boleh digunakan untuk menyimpan maklumat pengguna, mengesahkan identiti pengguna, mencegah serangan CSRF, dsb. Dalam rangka kerja Gin, kami boleh menggunakan perisian tengah untuk melaksanakan pengurusan sesi, dan pakej sesi memberikan kami antara muka operasi yang mudah. Dalam aplikasi praktikal, kami juga boleh menggabungkan modul berfungsi lain, seperti pengesahan, kebenaran, penyulitan, pengelogan, dll., untuk membina sistem aplikasi Web yang lebih lengkap.
Atas ialah kandungan terperinci Pengurusan sesi dan aplikasinya dalam rangka kerja Gin. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Memadamkan sesuatu yang penting daripada skrin utama anda dan cuba mendapatkannya semula? Anda boleh meletakkan ikon apl kembali pada skrin dalam pelbagai cara. Kami telah membincangkan semua kaedah yang boleh anda ikuti dan meletakkan semula ikon aplikasi pada skrin utama Cara Buat Asal Alih Keluar dari Skrin Utama dalam iPhone Seperti yang kami nyatakan sebelum ini, terdapat beberapa cara untuk memulihkan perubahan ini pada iPhone. Kaedah 1 – Gantikan Ikon Apl dalam Pustaka Apl Anda boleh meletakkan ikon apl pada skrin utama anda terus daripada Pustaka Apl. Langkah 1 – Leret ke sisi untuk mencari semua apl dalam pustaka apl. Langkah 2 – Cari ikon apl yang anda padamkan sebelum ini. Langkah 3 – Hanya seret ikon apl dari pustaka utama ke lokasi yang betul pada skrin utama. Ini adalah gambar rajah aplikasi

Peranan dan aplikasi praktikal simbol anak panah dalam PHP Dalam PHP, simbol anak panah (->) biasanya digunakan untuk mengakses sifat dan kaedah objek. Objek adalah salah satu konsep asas pengaturcaraan berorientasikan objek (OOP) dalam PHP Dalam pembangunan sebenar, simbol anak panah memainkan peranan penting dalam mengendalikan objek. Artikel ini akan memperkenalkan peranan dan aplikasi praktikal simbol anak panah, dan menyediakan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik. 1. Peranan simbol anak panah untuk mengakses sifat sesuatu objek Simbol anak panah boleh digunakan untuk mengakses sifat objek. Apabila kita instantiate sepasang

Perintah Linuxtee ialah alat baris arahan yang sangat berguna yang boleh menulis output ke fail atau menghantar output ke arahan lain tanpa menjejaskan output sedia ada. Dalam artikel ini, kami akan meneroka secara mendalam pelbagai senario aplikasi arahan Linuxtee, daripada kemasukan kepada kemahiran. 1. Penggunaan asas Mula-mula, mari kita lihat pada penggunaan asas arahan tee. Sintaks arahan tee adalah seperti berikut: tee[OPTION]...[FAIL]...Arahan ini akan membaca data daripada input standard dan menyimpan data ke

Bahasa Go ialah bahasa pengaturcaraan sumber terbuka yang dibangunkan oleh Google dan pertama kali dikeluarkan pada tahun 2007. Ia direka bentuk untuk menjadi bahasa yang mudah, mudah dipelajari, cekap dan sangat bersesuaian, serta digemari oleh semakin ramai pembangun. Artikel ini akan meneroka kelebihan bahasa Go, memperkenalkan beberapa senario aplikasi yang sesuai untuk bahasa Go dan memberikan contoh kod khusus. Kelebihan: Konkurensi yang kuat: Bahasa Go mempunyai sokongan terbina dalam untuk benang-goroutine ringan, yang boleh melaksanakan pengaturcaraan serentak dengan mudah. Goroutin boleh dimulakan dengan menggunakan kata kunci go

Artikel ini akan menerangkan secara terperinci tentang memulakan baru atau memulihkan sesi yang sedia ada dalam PHP Editor berpendapat ia agak praktikal, jadi saya berkongsi dengan anda sebagai rujukan saya harap anda boleh memperoleh sesuatu selepas membaca artikel ini. Pengurusan Sesi PHP: Mulakan Sesi Baharu atau Sambung Semula Sesi Sedia Ada Pengenalan Pengurusan sesi adalah penting dalam PHP, ia membolehkan anda menyimpan dan mengakses data pengguna semasa sesi pengguna. Artikel ini memperincikan cara memulakan sesi baharu atau menyambung semula sesi sedia ada dalam PHP. Mulakan sesi baharu Fungsi session_start() menyemak sama ada sesi wujud, jika tidak, ia mencipta sesi baharu. Ia juga boleh membaca data sesi dan menukarnya

Aplikasi Linux yang luas dalam bidang pengkomputeran awan Dengan perkembangan berterusan dan mempopularkan teknologi pengkomputeran awan, Linux, sebagai sistem pengendalian sumber terbuka, memainkan peranan penting dalam bidang pengkomputeran awan. Disebabkan oleh kestabilan, keselamatan dan fleksibilitinya, sistem Linux digunakan secara meluas dalam pelbagai platform dan perkhidmatan pengkomputeran awan, menyediakan asas yang kukuh untuk pembangunan teknologi pengkomputeran awan. Artikel ini akan memperkenalkan rangkaian luas aplikasi Linux dalam bidang pengkomputeran awan dan memberikan contoh kod khusus. 1. Aplikasi teknologi virtualisasi Linux dalam platform pengkomputeran awan Teknologi Virtualisasi

Cap waktu MySQL ialah jenis data yang sangat penting, yang boleh menyimpan tarikh, masa atau tarikh tambah masa. Dalam proses pembangunan sebenar, penggunaan cap masa yang rasional boleh meningkatkan kecekapan operasi pangkalan data dan memudahkan pertanyaan dan pengiraan berkaitan masa. Artikel ini akan membincangkan fungsi, ciri dan senario aplikasi cap waktu MySQL, dan menerangkannya dengan contoh kod khusus. 1. Fungsi dan ciri cap waktu MySQL Terdapat dua jenis cap masa dalam MySQL, satu ialah TIMESTAMP

1. Mula-mula kita klik pada titik putih kecil. 2. Klik pada peranti. 3. Klik Lagi. 4. Klik Penukar Aplikasi. 5. Tutup sahaja latar belakang aplikasi.
