会话管理(Session)
中间件 session 为 Macaron 实例 提供了会话管理的功能。
下载安装
go get github.com/go-macaron/session使用示例
import (
"github.com/go-macaron/session"
"gopkg.in/macaron.v1"
)
func main() {
m := macaron.Classic()
m.Use(macaron.Renderer())
m.Use(session.Sessioner())
m.Get("/", func(sess session.Store) string {
sess.Set("session", "session middleware")
return sess.Get("session").(string)
})
m.Get("/signup", func(ctx *macaron.Context, f *session.Flash) {
f.Success("yes!!!")
f.Error("opps...")
f.Info("aha?!")
f.Warning("Just be careful.")
ctx.HTML(200, "signup")
})
m.Run()
}Pongo2
如果您正在使用 pongo2 作为应用的模板引擎,则需要对 HTML 进行如下修改:
将 Flash 输出到当前响应
默认情况下,Flash 的数据只会在相对应会话的下一个响应中使用,但函数 Success、Error、Info 和 Warning 均接受第二个参数来指示是否在当前响应输出数据:
但是请注意,不管您选择什么时候输出 Flash 的数据,它都只能够被使用一次。
自定义选项
该服务允许接受一个参数来进行自定义选项(session.Options):
提供器
目前有 9 款内置的提供器,除了 内存 和 文件 提供器外,您都必须显式导入其它提供器的驱动。
以下为提供器的基本用法:
内存
文件
Redis
Memcache
PostgreSQL
可以使用以下 SQL 语句创建数据库(请确保 key 的长度和您设置的 Options.IDLength 一致):
MySQL
可以使用以下 SQL 语句创建数据库:
Couchbase
Ledis
Nodb
实现提供器接口
如果您需要实现自己的会话存储和提供器,可以通过实现下面两个接口实现,同时还可以将 内存 提供器作为学习案例。
Last updated
Was this helpful?