0

有没有办法从会话中删除值女巫陶醉于 go web 框架?

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

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

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

有谁能帮助我吗?

4

1 回答 1

0

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

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

于 2015-04-16T10:09:10.567 回答