继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

无无法师
关注TA
已关注
手记 44
粉丝 54
获赞 130
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多了个过期时间

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP