Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan golang untuk melaksanakan pengurusan sesi

Cara menggunakan golang untuk melaksanakan pengurusan sesi

PHPz
PHPzasal
2023-04-14 13:33:42862semak imbas

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.

  1. Menggunakan sesi dalam golang

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:

  • Penciptaan, pembacaan dan pengubahsuaian sesi.
  • Penyimpanan sesi yang berterusan. Data sesi boleh disimpan dalam memori atau disimpan pada cakera atau dalam pangkalan data.
  • Pengurusan keselamatan sesi. Untuk kuki atau mekanisme lain yang serupa, adalah perlu untuk memastikan bahawa penyemak imbas tidak boleh mengubah suai data sesi, dan pada masa yang sama menguasai penjanaan ringkasan sesi dan penjanaan rentetan pseudo-rawak sesi.
  1. Menggunakan perpustakaan gorila/sesi

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.

  1. Keselamatan perpustakaan gorila/sesi

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:

  • Tetapkan tempoh sah dan bendera keselamatan kuki. Secara lalai, gorila/sesi menggunakan kuki yang tidak disulitkan, yang menimbulkan risiko keselamatan. Oleh itu, kita perlu menetapkan bendera keselamatan kuki dan menyulitkannya untuk mengelakkan kuki daripada diganggu.
  • Sahkan kuki pada setiap permintaan. Kami perlu mengesahkan kuki pada setiap permintaan untuk memastikan ia tidak diganggu. Jika kuki telah diganggu, kami harus menamatkan sesi dengan serta-merta.
  1. Kesimpulan

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!

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