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
}
结果发现
![微信截图_20171102102304.png](https://static.studygolang.com/171102/6de05c6c2433b370959c62a5fe2b99ca.png)
而`session.Set("state", state)`的操作就是把state存入到sessions.Session里面有一个Values的`map[string]interface{}`,但是如图显示,两次得到的sessions.Session是不一样的。我真不知道怎么办了,我就是用`sessions.Default(c)`基本方法去做这个实现的。请问有没有大神知道是怎么回事呢?
有疑问加站长微信联系(非本文作者)