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中

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来判断用户是否登录

 

5.cookie和session的区别
cookie在客户端,session在服务端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三尾鱼网络科技

如果对您有帮助,赠人玫瑰手留余

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值