关于session,cookie,token的概念理解。

关于session,cookie,token的概念理解。

1.用户第一次向服务器发送请求的时候会在服务器自动创建一个session,服务器会向用户返回一个set-cookie字段,里面有session_id?


2.session刚创建时是一个空的列表?当用户的请求调用到类似于request.session['user_id']=user.id

​这样的代码后,session中会添加内容?相当于起到记录用户行为的作用?


3.session中存储数据的格式是[{user_id:12345},{user_name:zhangsan}]类似于这样吗?


4.cookie和session有相同的有效期?如果没有超过有效期,用户行为会向同一个session里不断存数据?如果清除浏览器缓存是不是cookie就没了,用户再次访问服务器时需要创建新的session?


5.用户登录前每次刷新页面都会生成一个新的token?登录后,最后一次刷新时的token会存到cookie中去?这个token的作用是如果用户连续两次或两次以上提交完全相同内容的表单到服务端,服务端会去判断是否有某两次提交的内容和携带的token都否完全一致,如果完全一致,则第二次开始的提交信息都会被拦截?


6.cookie中只存储两样东西,一个session_id,另一个是token?session_id作为身份标识,用于在服务端的session中记录携带当前session_id的用户的行为?token作为身份标识用于防止同一身份提交内容完全相同的表单?



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕美 2021-01-13 19:07:24

同学,你好,

1、服务器第一次接收到请求时,开辟了一块Session空间(创建了Session对象),同时生成一个Session id,并通过响应头的Set-Cookie向客户端发送要求设置cookie的响应; 客户端收到响应后,在本机客户端设置了cookie信息;

2、session是一个类字典对象,并不是列表,设置session后会先生成一个随机的字符串,并在django session表中存储该随机字符串与数据的记录,将随机的字符串发送给客户端浏览器(浏览器会设置一个键为sessionid来存放session值)

3、session类似于字典的存储格式

4、session,cookie的默认有效期为2周,清空缓存后就没有了。token值在用户退出前会一直有效的

5、注册成功后进行登录时会携带token值。会判断使用的token值是否相同,若相同则表示的是同一个用户操作的。

6、cookies存储在服务端,session存储在服务端。通过cookie存储一个sessionid,然后具体的数据则是保存在 session中。客户端发送的sessionid(存在与Cookie中)与服务端的sessionid匹配,若相同,则表示是同一用户

Token是服务端生成的一串字符串,唯一标识。是用户第一次登陆后,服务器生成一个token并将此token返回给客户端,以后客户端再次请求数据时只需要带上这个token,不需要再次带上用户名和密码

祝学习愉快~~~~


  • 提问者 慕粉1504263447 #1

    2.session中记录的数据是通过类似于这样的代码request.session['user_id']=user.id,不断向session_data字段中增加数据吗?如果程序员没有写这样的代码,是不是session_data就不会变?


    4.清空缓存后cookie就没有了,用户重新访问服务端的话就重新生成新的session和cookie了吧?


    5.结合老师课程中的内容,注册成功后,在返回了‘ok’的页面刷新后报错,是不是因为刷新操作跟之前的注册操作时的token是一样的,也就是同一个用户,并且执行相同的操作,提交了相同的数据,所以才报错的?


    6.cookie中是只存了session_id,和token吧?

    2021-01-13 20:12:17
  • 好帮手慕美 回复 提问者 慕粉1504263447 #2

    同学,你好,

    1、django中的session会存储到django_session表中,若向session中存储了新的内容,则表中的数据也会增加的,不只session_data会增加

    ​三个字段:"session_key"(sessionid)、"session_data"(当前session中的属性)、"expire_date"(过期时间)。

    http://img1.sycdn.imooc.com//climg/5fffa45c09ab58b706680134.jpg

    若没有写相应的代码,则session_data不会变化

    2、用户重新访问会生成新的session和cookie

    3、是的

    4、token是单独的,不会存储在cookie中

    祝学习愉快~~~~

    2021-01-14 10:15:26
  • 提问者 慕粉1504263447 回复 好帮手慕美 #3

    http://img1.sycdn.imooc.com//climg/5fffda7709660cde10960377.jpg这里看不是token被存到cookie中去了吗?

    2021-01-14 13:45:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.从网页搭建入门Python Web
  • 参与学习           人
  • 提交作业       218    份
  • 解答问题       3562    个

本阶段带你用Python开发一个网站,学习主流框架Django+Flask是Python Web开发的第一步,在基础知识上实现积分商城的项目开发,体验真实的项目开发流程,提高解决编程问题和效率的能力。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师