fasthttpsession is a fast and powerful session package for fasthttp servers
fasthttpsession is a session manager for Go. It only supports fasthttp, currently support providers:
- file
- memcache
- memory
- mysql
- postgres
- redis
- sqlite3
- Focus on the design of the code architecture and expansion.
- Provide full session storage.
- Convenient switching of session storage.
- Customizable data serialization.
- Implement concurrent map(ccmap.go) to improve performance.
The only requirement is the Go Programming Language, at least v1.7
$ go get -u github.com/phachon/fasthttpsession
$ go get ./...
// fasthttpsession use memory provider
import (
"github.com/phachon/fasthttpsession"
"github.com/phachon/fasthttpsession/memory"
"github.com/valyala/fasthttp"
"log"
"os"
)
// default config
var session = fasthttpsession.NewSession(fasthttpsession.NewDefaultConfig())
func main() {
// you must set up provider before use
err := session.SetProvider("memory", &memory.Config{})
if err != nil {
log.Println(err.Error())
os.Exit(1)
}
addr := ":8086"
log.Println("fasthttpsession example server listen: "+addr)
// fasthttp start listen serve
err = fasthttp.ListenAndServe(addr, requestHandle)
if err != nil {
log.Println("listen server error :"+err.Error())
}
}
// request handler
func requestHandle(ctx *fasthttp.RequestCtx) {
// start session
sessionStore, err := session.Start(ctx)
if err != nil {
ctx.SetBodyString(err.Error())
return
}
// must defer sessionStore.save(ctx)
defer sessionStore.Save(ctx)
sessionStore.Set("name", "fasthttpsession")
ctx.SetBodyString(fmt.Sprintf("fasthttpsession setted key name= %s ok", sessionStore.Get("name").(string)))
}
If you don't want to use the default configuration, please use the following struct custom.
type Config struct {
// cookie name
CookieName string
// cookie domain
Domain string
// If you want to delete the cookie when the browser closes, set it to -1.
//
// 0 means no expire, (24 years)
// -1 means when browser closes
// >0 is the time.Duration which the session cookies should expire.
Expires time.Duration
// gc life time(s)
GCLifetime int64
// session life time(s)
SessionLifetime int64
// set whether to pass this bar cookie only through HTTPS
Secure bool
// sessionId is in url query
SessionIdInURLQuery bool
// sessionName in url query
SessionNameInUrlQuery string
// sessionId is in http header
SessionIdInHttpHeader bool
// sessionName in http header
SessionNameInHttpHeader string
// SessionIdGeneratorFunc should returns a random session id.
SessionIdGeneratorFunc func() string
// Encode the cookie value if not nil.
EncodeFunc func(cookieValue string) (string, error)
// Decode the cookie value if not nil.
DecodeFunc func(cookieValue string) (string, error)
}
Different session provider config, please look at the Config.go the provider name directory.
Document address: http://godoc.org/github.com/phachon/fasthttpsession
- If you like the project, please Start.
- If you have any problems in the process of use, welcome submit Issue.
- If you find and solve bug, welcome submit Pull Request.
- If you want to expand session provider, welcome Fork and merge this rep.
- If you want to make a friend, welcome send email to phachon@163.com.
MIT
Create By phachon@163.com