这里面有一个大坑。它是这么使用的。
import (
"github.com/gorilla/sessions"
"github.com/labstack/echo-contrib/session"
)
e := echo.New()
e.Use(session.Middleware(sessions.NewCookieStore([]byte("secret"))))
...
它同时使用了gorilla/sessions
和echo-contrib/session
。然而,github.com/labstack/echo-contrib/session这个地址已经是404了。隐约中感觉有问题。
在jenkins中集成发布的时候,各种报错,其中一个是它会去请求/echo/v4
这个模块,但是实际上是请求不到的,导致报错了。
然后,我尝试把echo-contrib/session
删除,只使用gorilla/sessions
。发现也可以工作,而且不会去请求/echo/v4
。
具体使用方法与原先的session大同小异。
修改后只使用sessions模块
// 初始化
var store = sessions.NewCookieStore([]byte(config.SessionKey))
func SetSession(user model.User, c echo.Context){
// 获取session
sess ,_:= store.Get( c.Request() , sessionName)
// 设置session有效期
sess.Options = &sessions.Options{
Path: "/",
MaxAge: maxAge, // 以秒为单位
}
sess.Values["username"] = user.Username
// 保存session
sess.Save(c.Request(), c.Response())
}
原先使用session模块的用法
e.Use(session.Middleware(sessions.NewCookieStore([]byte("secret"))))
func SetSession(user model.User, c echo.Context){
sess, _ := session.Get(sessionName, c)
sess.Options = &sessions.Options{
Path: "/",
MaxAge: maxAge, // 以秒为单位
}
sess.Values["username"] = username
sess.Save(c.Request(), c.Response())
}
网友评论