博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使同一个server上不同port的django应用可在同一个浏览器上打开
阅读量:6889 次
发布时间:2019-06-27

本文共 816 字,大约阅读时间需要 2 分钟。

如果我们有两个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。

 

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

转载于:https://www.cnblogs.com/art-geek/p/6493304.html

你可能感兴趣的文章
jsf开发心得(3)-jsf应用中css运用背景图片显示不了的问题
查看>>
IOS UIAlertController 弹出框中添加视图(例如日期选择器等等)
查看>>
ubuntu 12.04 开启root
查看>>
WAR包制作
查看>>
XSS
查看>>
Java 线程学习
查看>>
JDK容器学习之List: CopyOnWriteArrayList,ArrayList,LinkedList对比
查看>>
JDK容器学习之LinkedHashMap (一):底层存储结构分析
查看>>
acl_cpp 编程之 xml 流式解析与创建
查看>>
Web端开发发展历程简单概述
查看>>
无聊的函数和方法之间的区别讨论
查看>>
最值得收藏的30本MySQL精品电子书
查看>>
android的消息处理机制(图+源码分析)——Looper,Handler,Message
查看>>
人脸识别 以及SoundPool 学习笔记
查看>>
内核启动过程
查看>>
王峰:数据中心全面迈入云时代
查看>>
二维码扫描和生成
查看>>
hbase-0.98整合hadoop-2.6,附java操作代码
查看>>
同一台电脑运行两个tomcat
查看>>
开源 免费 java CMS - FreeCMS1.4-功能说明-栏目管理
查看>>