没有加载 mongoStore模块来保持会话, 但仍然可以保持会话(session 存mongodb)
登录后的首页
重启grunt后
我在想是不是由于cookie-session或者cookie-parser 已经有储存功能了?
=====================================================
我又查了下mongodb,里面有session数据库,但是没有数据:
(movie是我用的表)
登录后的首页
重启grunt后
我在想是不是由于cookie-session或者cookie-parser 已经有储存功能了?
=====================================================
我又查了下mongodb,里面有session数据库,但是没有数据:
(movie是我用的表)
2016-11-09
首先保持会话的简要过程和目的如下:
浏览器向服务端发出请求,服务器端在session表中建立一条数据,其中userName 信息为空。
浏览器端进行登录操作,服务器端验证用户名密码存在且匹配,将用户名存入step1 中的userName 字段。
服务器返回response,response header中 包含reset cookie 的信息
浏览器端收到响应后,cookie被重置(因为response header 里有reset cookie的信息),包含了可用的session信息
以后每次从同一个浏览器发出的请求,request header 里都会携带session信息。服务器端收到请求后,parse cookie, 如果发现req.session.user 信息在session表中存在,则认为这是一个可靠的会话,用户可以进行操作无需重新登录。
再说你的问题:
只要你做了上面的step3, 即重置了cookie,那么以后从同一个浏览器发出的请求就都携带user 信息了。但是这些信息并不代表着一个可靠的会话,因为你的session表里没有内容,也就是说你没有验证req.session.user是否是一个已经登录过的用户
在服务器重启后,如果你还是使用同一个浏览器发出请求,那么请求的头信息不变, req.session.user依然存在。这就是为什么你觉得会话被保持了。
多说一句自己踩过的坑:
验证用户的session信息一定要在server端做,因为客户端的头信息是可以被随意篡改的。
举报