django判断⽤户是否登录:cookie与session校验机制
登录流程:
1. http请求是⽆状态的:
前端⽤户可以发起很多url请求,那么服务器如何区分哪个请求对应哪个⽤户呢?前端请求是独⽴的,服务器从理论上来说是⽆法区分哪个请求是哪个⽤户的,所以出现了cookie和session机制。
2.怎样让服务器区分接收的url请求是哪个⽤户的?
向url请求头/参数中添加 username和password都是不安全的。可以给⽤户⼀串随机字符串(token),token要满⾜⼏个条件:a.够随机,⽆法伪造
b.字符串由服务器⽣成,服务器要保存字符串
c.字符串要和⽤户对应起来
这个就是session机制
3.登录的过程(django服务器端)
(1)查询⽤户是否存在
(2)如果不存在则登录:login(request.user)逻辑
a.先将⽤户的基本信息组成json,然后加密⽣成加密的session_value字符串
b.随机⽣成⼀串长的字符串,叫做sessionid
c.将sessionid(key)和session_value绑定在⼀起保存到数据库中
d.将sessionid(session_key)写⼊到cookie中
django登录注册功能e.返回请求给浏览器
1. 登录过程(浏览器)
(1)从请求报⽂⾥⾯解析出cookie,cookie中写⼊了sessionid
(2)将sessionid以key-value⽅式写⼊到本地存储之中
(3)后续针对该⽹站的所有请求都会加上cookie
4.django如何确定某个请求是否登录?
(1)会拦截所有的请求
(2)在中发现了在cookie中的sessionid后,通过该sessionid查询到session_data,从session_data中解析出⽤户的id,通过id 查询到⽤户表
(3)对每个request都设置⼀个属性:user。所以在代码中可以根据request.user来判断⽤户是否登录
cookie在客户端,session在服务端
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论