Mengapa pembolehubah sesi saya tidak dipelihara menggunakan Sesi Gorilla?

Susan Sarandon
Lepaskan: 2024-11-03 00:22:02
asal
537 orang telah melayarinya

Why are my session variables not being preserved using Gorilla Sessions?

Pembolehubah Sesi Tidak Dipelihara Menggunakan Sesi Gorila

Dalam permintaan anda untuk bantuan dengan pengendalian sesi menggunakan Sesi Gorilla, anda menerangkan isu di mana nilai sesi tidak dikekalkan merentas permintaan .

Satu isu yang berpotensi terletak pada laluan yang anda tetapkan untuk stor sesi. Dengan menetapkan Laluan kepada /loginSession, anda mengehadkan kesahihan sesi kepada laluan khusus itu. Untuk memastikan sesi konsisten merentas semua laluan, anda harus menetapkan Laluan kepada / sebaliknya:

store.Options = &sessions.Options{
    Domain:   "localhost",
    Path:     "/",
    MaxAge:   3600 * 8,
    HttpOnly: true,
}
Salin selepas log masuk

Perkara lain yang perlu dipertimbangkan ialah cara anda menyemak nilai sesi. Daripada menggunakan session.Values["email"] == tiada, anda harus menaip menegaskan nilai pada rentetan untuk mengendalikan nilai kosong dengan betul:

if val, ok := session.Values["email"].(string); ok {
    // if val is a string
    switch val {
        case "":
            http.Redirect(res, req, "html/login.html", http.StatusFound)
        default:
            http.Redirect(res, req, "html/home.html", http.StatusFound)
    }
} else {
    // if val is not a string type
    http.Redirect(res, req, "html/login.html", http.StatusFound)
}
Salin selepas log masuk

Anda juga harus menyemak ralat semasa menyimpan sesi:

err := sessionNew.Save(req, res)
if err != nil {
    // handle the error case
}
Salin selepas log masuk

Akhir sekali, pastikan anda mendapat dan mengesahkan sesi sebelum menyampaikan fail statik dalam fungsi SessionHandler:

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

    if session.Values["email"] == nil {
        http.Redirect(res, req, "html/login.html", http.StatusFound)
    } else {
        http.Redirect(res, req, "html/home.html", http.StatusFound)
    }
}
Salin selepas log masuk

Dengan menangani isu ini, anda seharusnya dapat memastikan bahawa pembolehubah sesi dipelihara dengan betul merentas permintaan menggunakan Sesi Gorilla.

Atas ialah kandungan terperinci Mengapa pembolehubah sesi saya tidak dipelihara 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