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 ...
随机推荐
- number类型转化为string类型
toString 方法 string = toString(num) 缺点: 不能转化 underfind 和 null 2 String 方法 string = String(num) 可以转化 u ...
- 洛谷 P5105 不强制在线的动态快速排序
P5105 不强制在线的动态快速排序 题目背景 曦月最近学会了快速排序,但是她很快地想到了,如果要动态地排序,那要怎么办呢? 题目描述 为了研究这个问题,曦月提出了一个十分简单的问题 曦月希望维护一个 ...
- cgroup限制内存
cgroup有个memory子系统,有两组对应的文件,一组带 memsw ,另一组不带. # docker ps -a # cd /sys/fs/cgroup/memory/docker/4b5619 ...
- CH暑假欢乐赛 SRM 07 天才麻将少女KPM(DP+treap)
首先LIS有个$O(n^2)$的DP方法 $f(i,j)$表示前i个数,最后一个数<=j的LIS 如果$a_i!=0$则有 如果$a_i=0$则有 注意因为$f(i-1,j)\leq f(i-1 ...
- (转)编码规范系列(一):Eclipse Code Templates设置
背景:长久以来,对java编程中的注释不甚理解.再次学习<疯狂JAVA讲义>基础,深深的感到自己基本功的不牢固.所以要做到事无巨细,好好修炼. 认识注释 常识 注释的作用: 回顾原有的代码 ...
- OpenStack安装部署(二)
中文文档:http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/提示:这个中文文档是直接翻译过来的,所以会有很多不通顺的地方. 服务介绍 M ...
- ORM choice字段 如何在页面上显示值
核心:obj.get_字段名_display 1.定义module 数据结构: class msg(models.Model): choice = ( (1, '技术部'), (2, '行政'), ( ...
- jubeeeeeat
http://cdqz.openjudge.cn/2016/0003/ 总时间限制: 1000ms 内存限制: 256000kB 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏 ...
- Vue 的style绑定显示background-image
data () { return { img: require('你的json资源路径') } } :style="{backgroundImage: 'url(' + img + ')'} ...
- highCharts使用记录
公司的架构师让我做一个mockup,要用到highCharts,,以前想接触的,没时间学习,也没有用过,正好工作可以用上了,可以边学边做了. 环境 <script src="./js/ ...