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