会话管理(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 的数据只会在相对应会话的下一个响应中使用,但函数 SuccessErrorInfoWarning 均接受第二个参数来指示是否在当前响应输出数据:

但是请注意,不管您选择什么时候输出 Flash 的数据,它都只能够被使用一次。

自定义选项

该服务允许接受一个参数来进行自定义选项(session.Options):

提供器

目前有 9 款内置的提供器,除了 内存文件 提供器外,您都必须显式导入其它提供器的驱动。

以下为提供器的基本用法:

内存

文件

Redis

Memcache

PostgreSQL

可以使用以下 SQL 语句创建数据库(请确保 key 的长度和您设置的 Options.IDLength 一致):

MySQL

可以使用以下 SQL 语句创建数据库:

Couchbase

Ledis

Nodb

实现提供器接口

如果您需要实现自己的会话存储和提供器,可以通过实现下面两个接口实现,同时还可以将 内存 提供器作为学习案例。

Last updated

Was this helpful?