如果用户删除了Flask网站的Cookie,是否会有效地结束该会话?如果没有,Flask可以通过用户登录来确定用户是谁,以便服务器可以将该用户与之前的会话连接起来吗?
答案 0 :(得分:0)
答案似乎是“是的,Flask有时会'弄清楚你是谁'(重新将你与之前的会话联系起来),即使你删除了你的cookie”。
这是因为您的Flask-Login会话ID是根据您的IP地址和user_agent
字符串从确定性算法生成的。
通过阅读下面链接的SO问题及其答案,我学到了所有这些:
我做了以下观察:
- 对于相同的IP地址,但不同的浏览器我得到的不同
SIDs
- 这是预期的;- 针对不同的IP&相同的浏览器我再次有不同的
SIDs
- 期待;- 对于使用相同浏览器的同一IP地址,我得到相同的
醇>SID
- 也是预期的;现在,第(3)点很有意思,因为即使我删除 相应的Cookie
SID
仍然常量 !在某种程度上 即使这可能是可以理解的,但实际上我期待着SID
在不同的Cookie之间切换。但唯一的区别是我 看到了那个session.new is True
删除cookie后立即第一个请求。
An answer to the same question:
看起来您正在使用Flask-Login扩展程序。这是代码 生成id令牌:
def _create_identifier(): base = unicode("%s|%s" % (request.remote_addr, request.headers.get("User-Agent")), 'utf8', errors='replace') hsh = md5() hsh.update(base.encode("utf8")) return hsh.digest()
基本上只是
md5(ip_address + user_agent)
。
答案 1 :(得分:-1)
Session更像是发布到浏览器的唯一ID ...所以大多数时候,当您更改会话(而非会话ID)时,您只需修改后端部分