You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一服务器部署两个Flask应用的登录登出功能异常解决

解决同一服务器下两个Flask应用的flask-login会话冲突问题

问题根源是两个Flask应用默认使用相同的session cookie名称(session),浏览器会将同一个cookie发送给两个应用,导致会话状态互相干扰,哪怕设置了不同的SECRET_KEY也无法解决核心的cookie混淆问题。

以下是具体解决步骤:

  • 给每个应用配置唯一的session cookie名称:
    在Flask应用的配置中添加不同的SESSION_COOKIE_NAME,比如:

    # 第一个应用
    app.config['SESSION_COOKIE_NAME'] = 'app1_session'
    # 第二个应用
    app.config['SESSION_COOKIE_NAME'] = 'app2_session'
    
  • 针对Nginx代理的路径/域名场景补充配置:

    • 如果两个应用通过同域名的不同路径访问(如yourdomain.com/app1和yourdomain.com/app2),需分别设置SESSION_COOKIE_PATH,限定cookie的作用路径:
      # 第一个应用
      app.config['SESSION_COOKIE_PATH'] = '/app1'
      # 第二个应用
      app.config['SESSION_COOKIE_PATH'] = '/app2'
      
    • 如果是不同子域名访问(如app1.yourdomain.com和app2.yourdomain.com),明确设置SESSION_COOKIE_DOMAIN为各自的子域名:
      # 第一个应用
      app.config['SESSION_COOKIE_DOMAIN'] = 'app1.yourdomain.com'
      # 第二个应用
      app.config['SESSION_COOKIE_DOMAIN'] = 'app2.yourdomain.com'
      
  • 再次确认两个应用的SECRET_KEY完全不同:
    虽然这不是当前冲突的核心原因,但它是会话加密的基础,必须保证每个应用使用独立的密钥,比如:

    # 第一个应用
    app.config['SECRET_KEY'] = 'your_unique_secret_key_for_app1'
    # 第二个应用
    app.config['SECRET_KEY'] = 'your_unique_secret_key_for_app2'
    

完成以上配置后,两个应用的session cookie会被浏览器区分开,登录、登出操作将各自独立,不会互相干扰。

内容的提问来源于stack exchange,提问作者lqjun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 04:43:19