var store = sessions.NewCookieStore([]byte("secret"))
...
...
router.Use(sessions.Sessions("gosession", store))
{
router.GET("login", (&controllers.OauthController{}).LoginByAuth)
router.GET("auth", (&controllers.OauthController{}).AuthorizationCodeMethod)
}
上面是初始化session的代码, 我作用于两个方法,在LoginByAuth
中是
state := randToken()
session := sessions.Default(c)
session.Set("state", state)
session.Save()
就做了个存state 的操作。然后在AuthorizationCodeMethod
中
session := sessions.Default(c)
retrievedState := session.Get("state")
但是显示为空。我把两个函数中的session都有打印出来。session的结构是这样的,
type session struct {
name string
request *http.Request
store Store
session *sessions.Session
written bool
writer http.ResponseWriter
}
结果发现
而session.Set("state", state)
的操作就是把state存入到sessions.Session里面有一个Values的map[string]interface{}
,但是如图显示,两次得到的sessions.Session是不一样的。我真不知道怎么办了,我就是用sessions.Default(c)
基本方法去做这个实现的。请问有没有大神知道是怎么回事呢?
有疑问加站长微信联系(非本文作者)

同出现类似问题,大佬解决了吗?
在main方法里先执行下面代码
schema.User{}这段可以替换成你要存在session里的struct原型 顺便说一下需要保存的struct的数据不要太大,如果store使用的是数据库的话,session.save 会报错