Session和Cookie,Django的自动登录机制
什么是Cookie?
Cookie是浏览器的本地存储机制,存储服务器返回的各种信息,下次发起请求时再发送给服务端,比如访问baidu

什么是Session?
刚才说道,Cookie存储服务端返回的信息,下次请求时再带回给服务端,那如果能够存储用户名密码不就可以实现自动登陆了么?实际上,这种方式存在安全隐患,别人可以到你的电脑上通过查询你的Cookie就可以得到你的用户信息,于是Session机制应运而生。

Sessin由服务端生成并存储在数据库中,包括session_key,session_data,expire_date,其中session_key又叫sessionid,是一串随即字符串,服务端response时如果浏览器提交的request没有sessionid,那么服务端就会返回一个sessionid给浏览器,浏览器存储在Cookie中,session_data用加密方式存储了用户的基本信息,包括用户名、密码、字段信息等,expire_data是过期时间,默认两周。我们看看django中的session数据库

什么是自动登录?如何实现?
先看一段template代码

我们在template中判断如果request中有user对象且已经认证过了,我们显示一个页面;

否则就显示另一个页面

所以,自动登录的核心就是request中要有user对象,那怎么才能自动把user加入request中呢?

Django的sessions app会自动拦截request和response,根据浏览器request的sessionid找到对应的session_data,解密生成user对象加入request中,当服务器response时,服务端如果发现request中没有sessionid,就会返回一个sessionid给浏览器存储,session是在哪儿生成的呢?
记得login(request,user)函数吗?login在验证成功后会根据传进来的user对象生成session,并将sessionid放入request中,render(request,"index.html")时就会返回给浏览器。
Session和Cookie,Django的自动登录机制的更多相关文章
- JSP 通过Session和Cookie实现网站自动登录
点记住密码 login.jsp String host = request.getServerName(); Cookie cookie = new Cookie("SESSION_LOGI ...
- session和cookie自动登录机制
cookie的存储 cookie是浏览器支持的一种本地存储方式.以dict,键值对方式存储. {"sessionkey": "123"} 浏览器会自动对于它进行 ...
- 8、Django实战第8天:session和cookie自动登录机制
因为http是无状态协议,因此,并不会记录用户的登录状态.在早期,是直接把用户名和密码等信息存储在浏览器的cookie来实现记录用户密码登录. 但是这样存在安全隐患,只要别人登录你的电脑cookie信 ...
- 第十一篇 session和cookie自动登录机制
session和cookie的作用和区别可以在网上查到,这里简单说下,我们使用的http协议本身是种无状态的协议,就是说web服务器接收到浏览器的请求,会直接返回相应内容,并不会检查是哪个浏览器,即浏 ...
- JavaWeb学习记录总结(二十九)--Servlet\Session\Cookie\Filter实现自动登录和记住密码
一.Servlet package autologin.servlet.login; import java.io.IOException;import java.security.MessageDi ...
- session与cookie,django中间件
0819自我总结 一.session与cookie 1.django设置session request.session['name'] = username request.session['age' ...
- Session和Cookie,以及用户登录验证问题。
参考 :https://blog.csdn.net/u010002184/article/details/79416199 https://www.bbsmax.com/A/RnJW72YJqY/ 首 ...
- 自己Cookie写的自动登录功能 包含BASE64 和MD5的使用
sql表 username password字段 User类 有 id username password等字段 Service有一函数 @Override public User findUser ...
- mvc框架下,怎样用cookie实现下次自动登录
登录时有个下次自动登录的checkBox.点了它下次就可以自动登录了 具体流程我都晓得,就是细节的地方有些搞不定.我只要解决3个问题: (1)登录时如果点了checkbox,则在本机产生一个cooki ...
随机推荐
- 【BZOJ2961】共点圆(CDQ分治)
[BZOJ2961]共点圆(CDQ分治) 题面 BZOJ 题解 设询问点\((x,y)\),圆心是\((X,Y)\) 那么如果点在园内的话就需要满足 \((X-x)^2+(Y-y)^2\le X^2+ ...
- 编译安装haproxy开启支持SSL
1.下载程序包 # wget http://www.haproxy.org/download/1.7/src/haproxy-1.7.5.tar.gz # tar xvf haproxy-1.7.5. ...
- WEB入门.八 背景特效
学习内容 background属性 CSS Sprite 技术 滑动门技术 能力目标 使用background设置网页背景 使用Sprites制作平滑投票特效 使用滑动门技术实现Tab菜单 本章简介 ...
- 如何让自己的广播只让指定的 app 接收?
1.自己的应用(假设名称为应用 A)在发送广播的时候给自己发送的广播添加自定义权限,假设权限名为:com.itheima.android.permission , 然后需要在应用 A 的 Androi ...
- 【最大流/二分图匹配】【网络流24题】【P3254】 圆桌问题
Description 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为ri (i =1,2,--,m). 会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,--,n) ...
- HDU 6040 stl
Hints of sd0061 Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others ...
- 1044 Shopping in Mars
Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diam ...
- 【Asp.net入门5-02】创建数据模型和存储库
- Java入门:创建多个对象
当使用一个类实例化多个对象时,多个对象之间是什么关系?他们各自的数据会不会发生混淆?这次课跟大家讲解一下这个问题.学完本次课,大家应该对对象在内存中的表示方式有一个初步的了解,为理解更深入的面向对象概 ...
- 何凯文每日一句打卡||DAY1~DAY3
01长难句 In an open meeting with congressional Democrats and Republicans, Trump embraced raising the ag ...