为了账号安全,请及时绑定邮箱和手机立即绑定

Django学习笔记(6-6 session和cookie自动登录机制)

标签:
Python
cookie

浏览器中的本地存储以dict方式,相当于python中的dict,键值对形式。在我们浏览器中存储的是一段文本,浏览器会自动对这段文本进行解析。

为什么会有cookie存在

http协议本身是无状态的协议,服务器在接收到浏览器的请求之后,服务器是直接返回内容给我们浏览器,不管浏览器是谁请求的
cookie值在每次存储之后都会给服务器的,所以要想不被服务器跟踪,就要清理cookie
把用户名和密码保存到cookie中就自动登陆了
甚至访问过什么信息都可以放到cookie中来

为什么会有session

问题是有人拿到你的电脑之后就可以通过分析你的cookie,拿到你的用户名、密码等敏感信息
为了解决这个隐患我们就引申出了session.login就是生成session,对应的django在数据库中自动生成了session表用于存放用户的django_session。
session_key就是浏览器中的session_id,session_data是对账号密码等信息做了加密的。expire_date是过期时间。setting中可设置过期时间.
Django还有一个csrftoken.

session转换

这个session_id是怎么做到转换回账号密码等信息的?因为我们在后台是可以直接request.username的。

INSTALLED_APPS = [
    ‘django.contrib.sessions',
]

这个app是会对我们每次request和respone的请求做拦截的。拦截的浏览器过来的时候就会在里面找到我们的session_id。来数据表查询session_data并解密。我们response的时候他也会主动加上session_id。
问题:为什么在数据库里面叫session_key,在浏览器里面就叫session_id了,这个名字在哪里被换掉了?

总结

cookie是浏览器本地存储,存储账号密码,存储所有行为。这些键值对是存储在不同域名下的,他们是不能互相访问的。
由于cookie不安全,服务器在返回账号密码等信息的时候它用到了一种session机制。其实就是根据用户名和密码生成了随机字符串。这段字符串是有过期时间的。这个session是服务器生成的。是存储在服务器端的。浏览器把它存储在cookie中。服务器通过session_id查询这个用户的session_data并解密。
问题:好像也可以拿着用户的session_id去登陆对应网站呀?也就是session_id多了个过期时间

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消