## Session (會話) 中間件
Session 中間件促進了 [gorilla/sessions](https://github.com/gorilla/sessions) 支持的 HTTP 會話管理。默認提供了基于 cookie 與文件系統的會話存儲;然而,你也可以訪問 [community maintained implementation](https://github.com/gorilla/sessions#store-implementations) 來參考其各式各樣的后端實現。
> Echo 社區貢獻
### 依賴
```go
import (
"github.com/gorilla/sessions"
"github.com/labstack/echo-contrib/session"
)
```
*用法*
```go
e := echo.New()
e.Use(session.Middleware(sessions.NewCookieStore([]byte("secret"))))
e.GET("/", func(c echo.Context) error {
sess, _ := session.Get("session", c)
sess.Options = &sessions.Options{
Path: "/",
MaxAge: 86400 * 7,
HttpOnly: true,
}
sess.Values["foo"] = "bar"
sess.Save(c.Request(), c.Response())
return c.NoContent(http.StatusOK)
})
```
### Custom Configuration
*用法*
```go
e := echo.New()
e.Use(session.MiddlewareWithConfig(session.Config{}))
```
### 配置
```go
Config struct {
// Skipper defines a function to skip middleware.
Skipper middleware.Skipper
// Session store.
// Required.
Store sessions.Store
}
```
*默認配置*
```go
DefaultConfig = Config{
Skipper: DefaultSkipper,
}
```