又造了一個輪子—session庫!使用簡單!支援多儲存!

lyric發表於2018-06-13

https://github.com/go-session/session

又造了一個 session 的輪子,基於簡單使用,易擴充套件的目的!提供了多儲存的支援,記憶體儲存、檔案儲存、redis 儲存、cookie 儲存,後續會增加 mysql、mongodb 的支援。以及多種中介軟體的支援,有 gin、echo、beego、gear。歡迎來踩!!!

下面給出一個使用示例:

package main

import (
    "context"
    "fmt"
    "net/http"

    "github.com/go-session/session"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        store, err := session.Start(context.Background(), w, r)
        if err != nil {
            fmt.Fprint(w, err)
            return
        }

        store.Set("foo", "bar")
        err = store.Save()
        if err != nil {
            fmt.Fprint(w, err)
            return
        }

        http.Redirect(w, r, "/foo", 302)
    })

    http.HandleFunc("/foo", func(w http.ResponseWriter, r *http.Request) {
        store, err := session.Start(context.Background(), w, r)
        if err != nil {
            fmt.Fprint(w, err)
            return
        }

        foo, ok := store.Get("foo")
        if ok {
            fmt.Fprintf(w, "foo:%s", foo)
            return
        }
        fmt.Fprint(w, "does not exist")
    })

    http.ListenAndServe(":8080", nil)
}
更多原創文章乾貨分享,請關注公眾號
  • 又造了一個輪子—session庫!使用簡單!支援多儲存!
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章