Session 如果用户删除了Flask站点的Cookie,服务器是否仍能将其与会话关联?

Session 如果用户删除了Flask站点的Cookie,服务器是否仍能将其与会话关联?,session,flask,session-cookies,flask-login,Session,Flask,Session Cookies,Flask Login,如果用户删除了Flask站点的Cookie,这是否有效地结束了该会话?如果没有,Flask是否有任何可能的方法可以在用户未登录的情况下确定用户是谁,以便服务器可以将该用户与其以前的会话连接起来?会话更像是发布到浏览器上的唯一id,并且。。。因此,大多数情况下,当您更改会话(而不是会话id)时,您只需修改后端部分,答案似乎是“是的,即使您删除了cookie,Flask有时也可以“确定您是谁”(将您与以前的会话重新关联) 这是因为您的Flask登录会话ID仅根据您的IP地址和user\u agent

如果用户删除了Flask站点的Cookie,这是否有效地结束了该会话?如果没有,Flask是否有任何可能的方法可以在用户未登录的情况下确定用户是谁,以便服务器可以将该用户与其以前的会话连接起来?

会话更像是发布到浏览器上的唯一id,并且。。。因此,大多数情况下,当您更改会话(而不是会话id)时,您只需修改后端部分,答案似乎是“是的,即使您删除了cookie,Flask有时也可以“确定您是谁”(将您与以前的会话重新关联)

这是因为您的Flask登录会话ID仅根据您的IP地址和
user\u agent
string由确定性算法生成

我从阅读下面的SO问题及其答案中学到了这一切:

我发表了以下意见:

  • 对于相同的IP地址,但不同的浏览器,我得到不同的
    SID
    ——这是意料之中的
  • 对于不同的IP和相同的浏览器,我同样有不同的
    SID
    -预期
  • 对于使用相同浏览器的相同IP地址,我得到相同的
    SID
    -也应如此 现在,第(3)点很有趣,因为即使我删除了 对应的cookie
    SID
    保持不变
    !在某种程度上 即使这样也可以理解,但事实上我期待着
    SID
    在不同cookie之间更改。但唯一的区别是我 看到了吗

    session.new is True
    
    对于删除cookie后的第一个请求

    看起来您正在使用Flask登录扩展名。这是密码 生成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地址+用户代理)


    是的,但是如果用户删除了会话ID并发送了一个新的GET请求,服务器是否有办法找出该用户是谁并将其与现有会话重新连接?这就是我正在经历的行为。