Gorilla 会话包错误:“securecookie:未设置哈希密钥”

问题描述 投票:0回答:1

我创建了一个 HTTP API 来注册 GIN HTTP 包和 Gorilla 会话。但我收到如下错误消息:

"error": "securecookie: hash key is not set"

这是我的代码:

package main

import(
    "github.com/gin-gonic/gin"
    "github.com/gorilla/sessions"
    "os"
    "my-project/database"
)

type Register struct{
    Email string 'json:"email"' 
    Password string 'json:"password"'
}

var Store = sessions.NewCookieStore([]byte(os.Getenv("SESSION_KEY")))

func Register(c *gin.Context){
    session, err := Store.Get(c.Request, "my-session")
    req := new(Register)
    err := c.ShouldBindJson(&req)
    if err != nil {
        c.Json(400, "failed to register")
        return
    }
    err = database.CreateUser(req)
    if err != nil {
        c.Json(500, "failed to create user")
        return
    }
    session.Values["email"] = req.Email
    err = session.Save(c.Request, c.Writer)
    if err != nil {
        c.Json(500, gin.H{"error":err.Error(),})
        return
    }
    c.Json(200, gin.H{
        "massage":"user created successfuly",
    })
}

func main(){
    r := gin.Default()
    r.Post("/register", Register)
    r.Run(":8080")
}

我希望我的邮递员显示 JSON,例如“用户已成功创建”

go http session go-gin gorilla
1个回答
0
投票

此行从名为

SESSION_KEY
的 ENV 变量获取一个键:

var Store = sessions.NewCookieStore([]byte(os.Getenv("SESSION_KEY")))

很可能该变量未设置,这就是您收到错误的原因。

如果您从终端运行该程序,请检查它是否存在:

env | grep SESSION_KEY

如果没有任何结果,那么就没有,你应该设置它:

export SESSION_KEY="something"
© www.soinside.com 2019 - 2024. All rights reserved.