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)
基本方法去做这个实现的。请问有没有大神知道是怎么回事呢?