我创建了一个 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,例如“用户已成功创建”
此行从名为
SESSION_KEY
的 ENV 变量获取一个键:
var Store = sessions.NewCookieStore([]byte(os.Getenv("SESSION_KEY")))
很可能该变量未设置,这就是您收到错误的原因。
如果您从终端运行该程序,请检查它是否存在:
env | grep SESSION_KEY
如果没有任何结果,那么就没有,你应该设置它:
export SESSION_KEY="something"