美文网首页
go echo框架使用gorilla/sessions

go echo框架使用gorilla/sessions

作者: louhangfei | 来源:发表于2019-03-22 15:04 被阅读0次

    参考echo官方教程

    这里面有一个大坑。它是这么使用的。

    import (
      "github.com/gorilla/sessions"
      "github.com/labstack/echo-contrib/session"
    )
    e := echo.New()
    e.Use(session.Middleware(sessions.NewCookieStore([]byte("secret"))))
    
    ...
    

    它同时使用了gorilla/sessionsecho-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())
     }
    

    相关文章

      网友评论

          本文标题:go echo框架使用gorilla/sessions

          本文链接:https://www.haomeiwen.com/subject/eptrvqtx.html