Rumah >pembangunan bahagian belakang >Golang >Mengapa Pembolehubah Sesi Saya Tidak Berterusan Merentas Permintaan Menggunakan Sesi Gorilla?

Mengapa Pembolehubah Sesi Saya Tidak Berterusan Merentas Permintaan Menggunakan Sesi Gorilla?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 20:49:031019semak imbas

Why Are My Session Variables Not Persistent Across Requests Using Gorilla Sessions?

Pembolehubah sesi tidak dikekalkan merentas permintaan menggunakan sesi gorila

Isu ini boleh timbul apabila menggunakan perisian tengah Gorilla Sessions untuk mengurus pembolehubah sesi. Coretan kod yang disediakan menyerlahkan beberapa faktor yang boleh menjejaskan kegigihan sesi:

1. Konfigurasi Laluan Sesi

Kod menetapkan laluan sesi sebagai "/loginSession". Akibatnya, sesi hanya sah dalam laluan "/loginSession". Untuk memastikan ketersediaan sesi merentas semua laluan, laluan hendaklah ditetapkan kepada "/":

<code class="go">func init() {
    store.Options = &sessions.Options{
        Domain:   "localhost",
        Path:     "/",
        MaxAge:   3600 * 8, // 8 hours
        HttpOnly: true,
    }
}</code>

2. Perbandingan Rentetan Kosong

Kod menyemak sama ada session.Values["email"] == tiada untuk menentukan sama ada nilai itu rentetan kosong. Walau bagaimanapun, membandingkan rentetan kosong dengan nol adalah tidak betul. Sebaliknya, gunakan penegasan jenis untuk menyemak rentetan kosong:

<code class="go">if val, ok := session.Values["email"].(string); ok {
    if val == "" {
        // Do something...
    }
}</code>

3. Mengendalikan Ralat

Adalah penting untuk mengendalikan ralat semasa menyimpan sesi:

<code class="go">err := sessionNew.Save(req, res)
if err != nil {
    // Handle the error
}</code>

4. Perintah Pengesahan Sesi

Kod menyediakan fail statik sebelum mengesahkan sesi dalam fungsi SessionHandler. Untuk memastikan pengesahan sesi yang betul, sesi perlu disahkan terlebih dahulu:

<code class="go">func SessionHandler(res http.ResponseWriter, req *http.Request) {
    session, err := store.Get(req, "loginSession")
    if err != nil {
        // Handle the error
    }

    // Validate the session here...

    // Serve static files if the session is valid...
}</code>

Atas ialah kandungan terperinci Mengapa Pembolehubah Sesi Saya Tidak Berterusan Merentas Permintaan Menggunakan Sesi Gorilla?. 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