亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當 MaxAge 為 0 時,gorilla/sessions 無法保存新會話

當 MaxAge 為 0 時,gorilla/sessions 無法保存新會話

Go
交互式愛情 2023-07-31 14:55:43
我在玩具應用程序中使用 gorilla/sessions,并且我想使用 FilesystemStore,但如果我將MaxAge存儲選項設置為 0,它會在保存會話時嘗試刪除會話,但如果會話是新的,它沒有 ID:    sess, err := s.store.Get(r, "session-name")    if err != nil {        log.Printf("error getting session %v", err)        http.Error(w, "session", http.StatusInternalServerError)        return    }    sess.Values["name"] = r.FormValue("name")    if err = sess.Save(r, w); err != nil {        log.Printf("error saving session %v", err)        http.Error(w, "saving", http.StatusInternalServerError)        return    }    http.Redirect(w, r, "/view", http.StatusFound)我得到的錯誤是:2019/10/15 09:22:03 error saving session remove sessions\session_: The system cannot find the file specified.查看 Gorilla 代碼,似乎 Gorilla 代碼在確定會話是否有 ID 之前嘗試從存儲中刪除會話。我的問題是 Gorilla 的問題,還是我使用它的方式的問題?MaxAge不設置時一切正常0,但隨后我必須自己管理cookie。
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

如果您檢查Savemethod,您會看到它嘗試刪除與 的會話MaxAge <= 0。實際上,您可以通過這種方式標記需要刪除的會話。由于您正在使用 來創建會話s.store.Get(r, "session-name"),因此它將使用該存儲中的 MaxAge,并且您應該將其設置為大于 0 的值。

設置 MaxAge 的文檔說:

可以通過為該會話設置 Options.MaxAge = -1 來刪除單個會話。

但在保存中你可以看到:

如果會話的Options.MaxAge <= 0,則會話文件將從存儲路徑中刪除。

因此,將其設置為 0 與將其設置為 -1 或任何其他負值相同。


查看完整回答
反對 回復 2023-07-31
  • 1 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號