tangs b030ce89ca openbilibili | vor 5 Jahren | |
---|---|---|
.. | ||
AUTHORS | vor 5 Jahren | |
BUILD | vor 5 Jahren | |
LICENSE | vor 5 Jahren | |
README.md | vor 5 Jahren | |
cookie.go | vor 5 Jahren | |
cookie_go111.go | vor 5 Jahren | |
doc.go | vor 5 Jahren | |
go.mod | vor 5 Jahren | |
lex.go | vor 5 Jahren | |
options.go | vor 5 Jahren | |
options_go111.go | vor 5 Jahren | |
sessions.go | vor 5 Jahren | |
store.go | vor 5 Jahren |
gorilla/sessions provides cookie and filesystem sessions and infrastructure for custom session backends.
The key features are:
Let's start with an example that shows the sessions API in a nutshell:
import (
"net/http"
"github.com/gorilla/sessions"
)
// Note: Don't store your key in your source code. Pass it via an
// environmental variable, or flag (or both), and don't accidentally commit it
// alongside your code. Ensure your key is sufficiently random - i.e. use Go's
// crypto/rand or securecookie.GenerateRandomKey(32) and persist the result.
var store = sessions.NewCookieStore([]byte(os.Getenv("SESSION_KEY")))
func MyHandler(w http.ResponseWriter, r *http.Request) {
// Get a session. We're ignoring the error resulted from decoding an
// existing session: Get() always returns a session, even if empty.
session, _ := store.Get(r, "session-name")
// Set some session values.
session.Values["foo"] = "bar"
session.Values[42] = 43
// Save it before we write to the response/return from the handler.
session.Save(r, w)
}
First we initialize a session store calling NewCookieStore()
and passing a
secret key used to authenticate the session. Inside the handler, we call
store.Get()
to retrieve an existing session or create a new one. Then we set
some session values in session.Values, which is a map[interface{}]interface{}
.
And finally we call session.Save()
to save the session in the response.
Important Note: If you aren't using gorilla/mux, you need to wrap your handlers
with
context.ClearHandler
or else you will leak memory! An easy way to do this is to wrap the top-level
mux when calling http.ListenAndServe:
http.ListenAndServe(":8080", context.ClearHandler(http.DefaultServeMux))
The ClearHandler function is provided by the gorilla/context package.
More examples are available on the Gorilla website.
Other implementations of the sessions.Store
interface:
BSD licensed. See the LICENSE file for details.