BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #3773同步于 2014/10/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

问个django里面session的问题

ghoulchu
2014/10/22镜像同步8 回复
一直对这个东西不是特别理解,这个session是一直存放在服务器端吗?还是一直在request里面,我们看了一下request里面确实有session这个东西,但是网上也有人说是存放在服务器的数据库里,有个django_sesssion数据库,当然确实有。还有就是,有了session之后可以弥补cookie的容易暴露用户信息的缺点,这点我不太明白,究竟是怎么回事??总之现在感觉实在是理解不了这是一种什么样子的机制??
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
Chon机器人#1 · 2014/10/23
session是存放在服务器端的,除非你使用cookie based backend。 cookie里存放的只是session token(或者说session id),每次的request也只包含session token,具体的数据是存放在服务器端的(database/cache/file based backend),HttpRequest.session只是为了方便你的后端代码读取session的数据,并不表示数据就在HttpRequest中。 综上所述,使用session机制的情况下,所有的用户数据都存放在服务器端,而不会暴露在request中,request里只传递session token(session id),因此能够提高安全性。 【 在 ghoulchu (ghoula) 的大作中提到: 】 : 标 题: 问个django里面session的问题 : 发信站: 北邮人论坛 (Wed Oct 22 15:33:06 2014), 站内 : : 一直对这个东西不是特别理解,这个session是一直存放在服务器端吗?还是一直在request里面,我们看了一下request里面确实有session这个东西,但是网上也有人说是存放在服务器的数据库里,有个django_sesssion数据库,当然确实有。还有就是,有了session之后可以弥补cookie的容易暴露用户信息的缺点,这点我不太明白,究竟是怎么回事??总之现在感觉实在是理解不了这是一种什么样子的机制?? : -- : : ※ 来源:·北邮人论坛 http://bbs.byr.cn·[FROM: 10.104.6.*]
ghoulchu机器人#2 · 2014/10/23
【 在 Chon 的大作中提到: 】 : session是存放在服务器端的,除非你使用cookie based backend。 : cookie里存放的只是session token(或者说session id),每次的request也只包含session token,具体的数据是存放在服务器端的(database/cache/file based backend),HttpRequest.session只是为了方便你的后端代码读取session的数据,并不表示数据就在HttpRequest中。 : 综上所述,使用session机制的情况下,所有的用户数据都存放在服务器端,而不会暴露在request中,request里只传递session token(session id),因此能够提高安全性。 : ................... 大神,能提个过分的要求吗 把你QQ给我好不 有些问题我确实是查了好久也差不明白 周围也没有人懂 我保证不轻易打扰你 我问的问题绝对是我实在弄不会的时候才问你
ghoulchu机器人#3 · 2014/10/23
【 在 Chon 的大作中提到: 】 : session是存放在服务器端的,除非你使用cookie based backend。 : cookie里存放的只是session token(或者说session id),每次的request也只包含session token,具体的数据是存放在服务器端的(database/cache/file based backend),HttpRequest.session只是为了方便你的后端代码读取session的数据,并不表示数据就在HttpRequest中。 : 综上所述,使用session机制的情况下,所有的用户数据都存放在服务器端,而不会暴露在request中,request里只传递session token(session id),因此能够提高安全性。 : ................... 大神,我再问你个问题 服务器数据库要存储用户的信息,那么就得知道过来的这个请求是哪个用户的,也就是要检测sessionid,那么是不是说,这个sessionid就是跟数据库中的某个用户是绑定的,这种sessionid--用户的对应关系,也是服务器端的服务程序来自行解析的,不需要我们来处理???一般,我们会在数据库django_session中存放用户的用户名和id,是不是就是根据这个,然后服务器就能够将sessionid和用户对应起来,当用户的请求发过来之后,根据这个sessionid找到了用户,然后再由我们来处理request中的数据,对用户数据库进行相应处理???
Chon机器人#4 · 2014/10/23
session顾名思义指的是「会话」,就是这若干个request所构成的会话。 当然你可以和用户进行绑定,但这不是绝对的。 比如同一个用户在不同的两台电脑上同时访问你的网站,你说对应的是一个session还是两个session? 【 在 ghoulchu (ghoula) 的大作中提到: 】 : 大神,我再问你个问题 服务器数据库要存储用户的信息,那么就得知道过来的这个请求是哪个用户的,也就是要检测sessionid,那么是不是说,这个sessionid就是跟数据库中的某个用户是绑定的,这种sessionid--用户的对应关系,也是服务器端的服务程序来自行解析的,不需�
ghoulchu机器人#5 · 2014/10/23
【 在 Chon 的大作中提到: 】 : session顾名思义指的是「会话」,就是这若干个request所构成的会话。 : 当然你可以和用户进行绑定,但这不是绝对的。 : 比如同一个用户在不同的两台电脑上同时访问你的网站,你说对应的是一个session还是两个session? : ................... 我现在就是有一个地方想不通,服务器确实是按照不同的session id 来区别不同的用户,比如说在request的cookie中,检测到一个sessionid,那么我们怎么根据这个sessionid来定位到某个具体的用户,还是说服务器就给我们定位了,不需要我们自己来编写代码??
ghoulchu机器人#6 · 2014/10/23
【 在 Chon 的大作中提到: 】 : session顾名思义指的是「会话」,就是这若干个request所构成的会话。 : 当然你可以和用户进行绑定,但这不是绝对的。 : 比如同一个用户在不同的两台电脑上同时访问你的网站,你说对应的是一个session还是两个session? : ................... 大神,我貌似知道怎么做了。 是不是浏览器的sessionid对应了服务器的数据库中的django_session,然后我们可以在这个django_session中存放了用户和用户id,然后通过User.objects.get('name')的方式找到那个用户,这样就将sessionid和具体的某个用户对应上了。
Chon机器人#7 · 2014/10/24
具体的实现方式看官方文档吧 https://docs.djangoproject.com/en/dev/topics/http/sessions/ 【 在 ghoulchu (ghoula) 的大作中提到: 】 : 大神,我貌似知道怎么做了。 : 是不是浏览器的sessionid对应了服务器的数据库中的django_session,然后我们可以在这个django_session中存放了用户和用户id,然后通过User.objects.get('name')的方式找到那个用户,这样就将sessionid和具体的某个用户对应上了。
ghoulchu机器人#8 · 2014/10/24
【 在 Chon 的大作中提到: 】 : 具体的实现方式看官方文档吧 https://docs.djangoproject.com/en/dev/topics/http/sessions/ : 好的