有没有办法从会话中删除go go web框架中的值?
我有一个验证用户输入验证码的功能,我在会话中设置验证码的值,如果1分钟后客户端没有任何操作,则从会话中删除验证码。代码如下:
time.AfterFunc(time.Minute, func() {
delete(this.Session, CSecurityCode)
})
但我仍然可以获得验证码的旧价值,为什么以及如何解决这个问题?
有谁可以帮助我?
答案 0 :(得分:0)
会话值仅在处理客户端请求时有效。即在您收到请求的时间和您回复该请求的时间之间。它的内容保存在客户端的cookie中,每次客户端连接到服务器时,您都会获得一个新的Session。因此,如果你保留它供以后使用(比如你的AfterFunc建议的名称,由计时器触发?),你用它做的任何事情都将在下一个客户端连接上丢失。
为了实现您想要做的事情,您需要在Session中添加“lastSeen”时间戳。当请求进入时,请检查Session [“lastSeen”],如果它超过1分钟,则可以从中丢弃CSecurityCode。