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
Lepaskan: 2024-11-03 20:49:03
asal
1010 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan