securecookie: the value is not valid这个错误有没有遇到的?

securecookie: the value is not valid这个错误有没有遇到的?

session.go文件如下

package session

import (
    "net/http"

    "github.com/gorilla/sessions"
    "goblog/pkg/logger"
)

// Store gorilla sessions 的存储库
var Store = sessions.NewCookieStore([]byte("33446a9dcf9ea060a0a6532b166da32f304af0de"))

// Session 当前会话
var Session *sessions.Session

// Request 用以获取会话
var Request *http.Request

// Response 用以写入会话
var Response http.ResponseWriter

// StartSession 初始化会话,在中间件中调用
func StartSession(w http.ResponseWriter, r *http.Request) {
    var err error

    // Store.Get() 的第二个参数是 Cookie 的名称
    // gorilla/sessions 支持多会话,本项目我们只使用单一会话即可
    Session, err = Store.Get(r, "goblog-session")
    logger.LogError(err)

    Request = r
    Response = w
}

// Put 写入键值对应的会话数据
func Put(key string, value interface{}) {
    Session.Values[key] = value
    Save()
}

// Get 获取会话数据,获取数据时请做类型检测
func Get(key string) interface{} {
    return Session.Values[key]
}

// Forget 删除某个会话项
func Forget(key string) {
    delete(Session.Values, key)
    Save()
}

// Flush 删除当前会话
func Flush() {
    Session.Options.MaxAge = -1
    Save()
}

// Save 保持会话
func Save() {
    // 非 HTTPS 的链接无法使用 Secure 和 HttpOnly,浏览器会报错
    // Session.Options.Secure = true
    // Session.Options.HttpOnly = true
    err := Session.Save(Request, Response)
    logger.LogError(err)
}

中间件start_session.go文件

package middlewares

import (
    "net/http"

    "goblog/pkg/session"
)

// StartSession 开启 session 会话控制
func StartSession(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {

        // 1. 启动会话
        session.StartSession(w, r)

        // 2. . 继续处理接下去的请求
        next.ServeHTTP(w, r)
    })
}

开启会话

于江
讨论数量: 1

我也遇到了这个报错,我用的go是1.18的,难道是版本的问题?

8个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!