如果用户删除了Flask网站的cookie,服务器是否仍然可以将他与他的会话相关联?

时间:2017-10-31 04:45:50

标签: session flask session-cookies flask-login

如果用户删除了Flask网站的Cookie,是否会有效地结束该会话?如果没有,Flask可以通过用户登录来确定用户是谁,以便服务器可以将该用户与之前的会话连接起来吗?

2 个答案:

答案 0 :(得分:0)

答案似乎是“是的,Flask有时会'弄清楚你是谁'(重新将你与之前的会话联系起来),即使你删除了你的cookie”。

这是因为您的Flask-Login会话ID是根据您的IP地址和user_agent字符串从确定性算法生成的。

通过阅读下面链接的SO问题及其答案,我学到了所有这些:

Constant Flask Session IDs

  

我做了以下观察:

     
      
  1. 对于相同的IP地址,但不同的浏览器我得到的不同SIDs - 这是预期的;
  2.   
  3. 针对不同的IP&相同的浏览器我再次有不同的SIDs - 期待;
  4.   
  5. 对于使用相同浏览器的同一IP地址,我得到相同的SID - 也是预期的;
  6.         

    现在,第(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)时,您只需修改后端部分