session实现好像并没有起作用!

来源:3-15 api之session处理与实现(上)

慕移动7552751

2018-10-24

老师,您好!我对session验证那块的代码有疑问,下面这段代码感觉好像并没有起作用。

func (m middleWareHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	//check session
	validateUserSession(r)
	m.r.ServeHTTP(w, r)
}

另外,验证是否session是否过期的代码并没有更新ttl。

func IsSessionExpired(sid string) (string, bool) {
	ss, ok := sessionMap.Load(sid)
	ct := nowInMilli()
	if ok {
		if ss.(*defs.SimpleSession).TTL < ct {
			deleteExpiredSession(sid)
			return "", true
		}
		return ss.(*defs.SimpleSession).Username, false
	} else {
		ss, err := dbops.RetrieveSession(sid)
		if err != nil || ss == nil {
			return "", true
		}
		if ss.TTL < ct {
			deleteExpiredSession(sid)
			return "", true
		}
		sessionMap.Store(sid, ss)
		return ss.Username, false
	}
	return "", true
}

我想知道我登录后,不间断请求超过30分钟后,如何实现session验证的?

谢谢老师了!

写回答

1回答

艾文西

2018-10-25

这里的session机制确实是没有更新session的,如果有兴趣您可以自己加上

添加也很简单,直接在这里面重新调用GenerateNewSessionId完成

0
0

Go语言实战流媒体视频网站,高效学习Go高性能开发

从零开始,全面掌握Go语言编码的架构风格和开发Web的关键技能

996 学习 · 268 问题

查看课程