如果我们有两个django应用site1和site2同时跑在同一个server的不同端口,同时我们在同一个浏览器的不同tab登录。那么这时就出出现这种情况,当我们登录site2时就会将site1上登录的用户踢下来。

为什么会出现这种情况呢?这跟django的session框架有关,这里做一个简单介绍:当我们第一次访问一个django网站时,django会生成一个session来保存当前会话的一些信息。同时会生成一个哈希值session_key并生成一个cookie发送给客户端,这个cookie的名字根据setting中SESSION_COOKIE_NAME设置,默认为“sessionid”(划重点)。这样下次请示session_key就会跟随cookie发送到server。server根据session_key查找对应session对象,获取当前会话的信息,当然也包括登录信息。

所以上面的情况真相只有一个(柯南推眼镜脸):

  1. 我们登录site1是得到一个叫sessionid的cookie,里面存储session_key1。
  2. 当我们登录site2时会更新那个叫sessionid的cookie,现在它的值为session_key2(浏览器存储cookies是基于ip而不是端口,所以会更新同一个名字的cookie)。
  3. 所以现在用新的session_key访问site1时就会拿不到原来的登录信息,需要我们重新登录。

那么怎么解决呢,了解上面机制后,只需要在setting中设置SESSION_COOKIE_NAME即可。比如可以在site2中设置SESSION_COOKIE_NAME = ‘site2’,site1中用默认。当然也可同时设置site1和site2。

这里是老瘦家的儿子,如需转载请声明,我替老瘦感谢你

最新文章

  1. Android与H5交互
  2. Linux常用的命令以及一些常见的问题
  3. codevs1540 银河英雄传说
  4. HTML5:web socket 和 web worker
  5. Outlook2013 最小化Com加载项
  6. BeanFactory和ApplicationContext的区别
  7. StackOverflow程序员推荐的几本书籍
  8. 解决:jquery ajax非首次请求Server端获取cookie值中文乱码问题
  9. hdu 4462(状态压缩)
  10. ARC小知识
  11. spring接收参数
  12. MAMP显示文件列表
  13. Pycharm下同一目录的py文件不能相互调用的原因分析
  14. Rhino学习教程——1.3
  15. spring boot aop 自定义注解 实现 日志检验 权限过滤
  16. SQL Agent Job 报“Access to the remote server is denied because the current security context is not trusted”
  17. Tarjan算法【强连通分量】
  18. 100BASE-TX、100Base-FX等含义
  19. 教你一招:解决Windows 开机弹出AotuIt ERROR 错误
  20. highchart应用示例1--2个不同类型变量2个y轴

热门文章

  1. 微信小程序 - 弹出键盘遮挡住输入框
  2. Avalon探索之旅
  3. 利用.NET Core类库System.Reflection.DispatchProxy实现简易Aop
  4. asp.net 服务器控件的 ID,ClientID,UniqueID 的区别
  5. 监控事件日志关键字规则(EventDescription)
  6. MySQL 数据库--内置功能
  7. Linux命令--获取帮助
  8. SQLAlchemy总结
  9. 纯css3跑马灯demo
  10. MAC下常用命令的中文帮助文档(man) 出现错误