项目作者: anhuret

项目描述 :
Simple Go session management library. Provides memory and filesystem stores.
高级语言: Go
项目地址: git://github.com/anhuret/gsession.git
创建时间: 2019-01-08T05:03:05Z
项目社区:https://github.com/anhuret/gsession

开源协议:MIT License

下载


gsession

Very simple Go session management library. Provides memory and filesystem stores.

Features

  • Absolute expiry, regardless of session activity
  • Idle inactivity timeout
  • Renewal timeout when session ID is renewed regardless of the session activity or idle timeout
  • Expiry, idle and renew timeouts can be disabled
  • Uses excellent Badger KV DB for on disk persistance

Install

  1. go get -u github.com/anhuret/gsession

Go version

Built and tested with Go 1.14

Usage

  1. package main
  2. import (
  3. gs "github.com/anhuret/gsession"
  4. "net/http"
  5. )
  6. func main() {
  7. // Create default session manager
  8. // Use nil to get default memory store
  9. // Use 0 for expiry, idle and renew to get defaults: 24H, 1H and 30M respectively
  10. manager := gs.New(nil, 0, 0, 0)
  11. // Handler function
  12. sayHello := func(w http.ResponseWriter, r *http.Request) {
  13. switch r.RequestURI {
  14. case "/set":
  15. err := manager.Set(r, "key", "Hello, gsession\n")
  16. if err != nil {
  17. http.Error(w, err.Error(), http.StatusInternalServerError)
  18. }
  19. case "/get":
  20. val, err := manager.Get(r, "key")
  21. if err != nil {
  22. http.Error(w, err.Error(), http.StatusInternalServerError)
  23. break
  24. }
  25. w.Write([]byte(val.(string)))
  26. }
  27. }
  28. // Wrap your handler function in gsession middlware
  29. handler := manager.Use(http.HandlerFunc(sayHello))
  30. http.ListenAndServe(":8080", handler)
  31. }
  1. [ruslan@weasel ~]$ curl -I -c cookie http://localhost:8080/set
  2. HTTP/1.1 200 OK
  3. Set-Cookie: gsession=e7735c38-0368-475a-852f-290774f2679f; Path=/; Expires=Thu, 24 Jan 2019 11:43:52 GMT; HttpOnly
  4. Date: Wed, 23 Jan 2019 11:43:52 GMT
  5. [ruslan@weasel ~]$ curl -b cookie http://localhost:8080/get
  6. Hello, gsession

To use persistent session store with Badger backend

  1. // Give it a directory or leave blank to get default "gsession"
  2. manager := gs.New(gs.NewFileStore("some_directory", 0), 0, 0, 0)

Test

Run go test from the project root

  1. go test -cover
  2. PASS
  3. coverage: 83.7% of statements
  4. ok github.com/anhuret/gsession 0.382s

Why?

This is my humble attempt at learning Go. A session manager seemed like a good choice.\

License

MIT