• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Revel Session / Flash

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Revel 支持两种 基于 cookie 存储机制

// 一个签名 cookie (不超过4kb).
// 限制: Keys may not have a colon in them.
type Session map[string]string

// 在每个请求中,Flash 获取并重写cookie。
// 它允许数据每次跨越存储到一个页面。It allows data to be stored across one page at a time.
// 它通常用来实现成功或错误消息。
// 比如: Post/Redirect/Get : http://en.wikipedia.org/wiki/Post/Redirect/Get
type Flash struct {
    Data, Out map[string]string
}

Session

Revel的 “session” 是一个加密签名存储的字符串 map。

影响如下:

  • 大小不超过 4kb。
  • 所有数据被保存为一个序列化的字符串。
  • 用户可以查看、修改所有数据 (未加密)。

session cookie 的默认过期时间是浏览器关闭。 可以在app.config修改session.expires配置来指定一个有效期时间。格式是time.ParseDuration.

Flash

Flash 支持单独使用字符串存储。这对于实现 Post/Redirect/Get 模式是很有用的, 或临时显示 “操作成功!” 或 “操作失败!” 消息。

下面是一个例子:

// 一个设置页面
func (c App) ShowSettings() revel.Result {
    return c.Render()
}

// 处理页面提交数据
func (c App) SaveSettings(setting string) revel.Result {
    // 验证用户输入
    c.Validation.Required(setting)
    if c.Validation.HasErrors() {
        // 设置被带回的flash cookie错误信息
        c.Flash.Error("Settings invalid!")
        // 在flash cookie中保存验证错误
        c.Validation.Keep()
        // 复制所有给定的参数(URL, Form, Multipart)到flash cookie
        c.FlashParams()
        return c.Redirect(App.ShowSettings)
    }
    saveSetting(setting)
    // 设置flash cookie成功消息
    c.Flash.Success("Settings saved!")
    return c.Redirect(App.ShowSettings)
}

例子主要功能如下:

  1. 用户获取设置页面。
  2. 用户提交一个表单 (POST)。
  3. 应用程序处理用户请求,保存错误或成功的消息到flash中,然后重定向设置页面 (REDIRECT)。
  4. 用户获取设置页面, 显示flash中的消息。 (GET)

主要使用了两个函数:

  1. Flash.Success(message string) 是 Flash.Out["success"] = message简写方式
  2. Flash.Error(message string) 是 Flash.Out["error"] = message简写方式

在模板中使用key来获取Flash 消息。例如, 通过简写函数获取成功和错误消息:

{{.flash.success}}
{{.flash.error}}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Revel Results发布时间:2022-02-02
下一篇:
Revel 参数验证发布时间:2022-02-02
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap