如何从revel中删除会话中的值

时间:2015-04-15 07:41:35

标签: session go revel

有没有办法从会话中删除go go web框架中的值?

我有一个验证用户输入验证码的功能,我在会话中设置验证码的值,如果1分钟后客户端没有任何操作,则从会话中删除验证码。代码如下:

time.AfterFunc(time.Minute, func() {
    delete(this.Session, CSecurityCode)
})

但我仍然可以获得验证码的旧价值,为什么以及如何解决这个问题?

有谁可以帮助我?

1 个答案:

答案 0 :(得分:0)

会话值仅在处理客户端请求时有效。即在您收到请求的时间和您回复该请求的时间之间。它的内容保存在客户端的cookie中,每次客户端连接到服务器时,您都会获得一个新的Session。因此,如果你保留它供以后使用(比如你的AfterFunc建议的名称,由计时器触发?),你用它做的任何事情都将在下一个客户端连接上丢失。

为了实现您想要做的事情,您需要在Session中添加“lastSeen”时间戳。当请求进入时,请检查Session [“lastSeen”],如果它超过1分钟,则可以从中丢弃CSecurityCode。