用Django和前端做的网站,58同城登录首页登录陆存了session和cookies,其他页面不怎么改变登录状态,求各位大神代码示范?

http请求时无状态的一个客户端第┅次,第二次第n次访问同一个服务器都是一样的,服务器都会按照一个新的连接处理但是,有时候客户端需要服务器记住客户端的登錄状态譬如离开一会,回来之后仍然保持着之前的登录状态。这时候就需要cookie和session

cookie: 是服务器发送的保存在客户端的一个字符串,浏览器每次请求是都会带上cookie例如,把用户名和密码保存在cookie中只要cookie没有过期,以后用户每次登录都可以自动登录不需要再输入用户名和密碼。

session: 是保存在服务器端的一个大的字典浏览器第一次访问服务器的时候,服务器把sessionid传到浏览器然后浏览器把sessionid保存在lcookie中,每次访问时带上这个标识,服务器就可以标识这个请求来自哪个用户

一个简单的实例来说明cookie的用法:

django写两个页面,一个登录页面登录成功之后跳转到另一个页面:

模板html代码如下:

登录成功之后,跳转的页面如下:

各个页面对应的视图函数如下:因为只是为了验证代码中使用字典存储了两个用户的信息。

然后运行django验证一下设置的cookie,在上面的index视图函数中加入打印语句print(v);

在浏览器输入http://127.0.0.1:8000/login然后输入用户名和密码;点击登录可以看到如下,请求过程

  1. 首先请求login页面,服务器会把cookie作为响应的一部分传入到浏览器,然后浏览器把cookie存储到本地
  2. 点击登录后,頁面跳转到index浏览器会把cookie作为请求的一部分传入到服务器,服务器会收到浏览器的请求

查看logni的响应部分如下:

index的请求报文如下:

服务端print語句得到的结果如下:

这样默认的设置,cookie的有效期为浏览器关闭之后cookie即失效,我们可以对cookie做一些设置如下:

path='/', Cookie生效的路径,/ 表示根路径特殊的:跟路径的cookie可以被任何url的页面访问 httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对底层抓包可以获取到也可以被覆盖)

这样设置cookie的有效期,cookie是从第一次登陆界面开始计算正常是,cookie有效期是从最后一次登陆开始,可以这样设置如下:

上面的cookie我们使用的明文传输,还可鉯使用加密的方式传输

cookie 将字符串进行salt加解密,写法如下:
 

在访问有许多类似excel表格的页面时我们希望,可以改变每个页面输出的数据的條目数量这个数量从前端到后端的传输,我们可以使用cookie来处理如下:

cookie是存储在客户端的,session是存储在服务器端的

html页面和上面的一样,需要更改的是视图函数视图函数如下:

上面代码设置了session存储在数据库中,有效期为10sdjango默认使用sqlite存储,因此启动之前需要使用如下两个命令,创建对应的表

访问页面输入密码,可以在数据库中发现对应的session数据:

}

首先需要理解的是 http 协议是一个无狀态(stateless)的协议

什么叫无状态呢,就好比你去银行的柜台办事柜员给你办完了你就离开了。柜员接着接待下一位顾客
柜员不会把为伱办的那一摊事和材料摊在桌上,等你下次再来
因为你可能一个月或者一年都不来了。当然也可能明天还来
你既可能下次还遇到这个櫃员,也可能你下次通过银行的另一个网点来办事和另一个柜员打交道。即便你找到这个柜员但是柜员因为接待很多顾客,也不记得伱了

你访问http服务器也是一样,web服务器每次把你的访问当成一个全新的“顾客”但是这就有一个问题了。
有时候你需要多次访问一个网站并且让网站需要知道你的身份。比如说登录网站总不能你每打开一个页面都要输入一次你的用户名和密码。
这里就要一种机制来哏踪你的状态。

还是拿银行打比方比如有的事情,你跑1次柜台就搞不定那么怎么办?银行也不能保证柜员个人记住你的一切或者收著你的材料等你来。银行的办法就是通过你的身份证和银行卡来识别你的身份,你拿着相同的身份证或者卡号那么你就是同一个人。銀行有时候在办理业务的时候会给你一张凭条或者什么文件嘱咐你,下次来办事把这个纸条带上。但是有些内容涉及机密,不能给伱怎么办,银行的工作人员有一个电脑把你的身份证扫了一下以后,巴拉巴拉把一些信息输入了进去

web网站也是一样的道理,这里银荇给你的材料让你每次都带来的,就是cookie而银行根据你的身份,在他那里的计算机里做记录的就是session。为什么说禁用了cookiesession不能工作呢?這就好比你没有带身份证银行肯定不给你办事。

那么cookie在网站里的使用场景一般有什么呢比如说,一些网站的草稿箱功能暂时存储你嘚编辑的文本。还有的网站有记住用户名的功能让你下次访问直接登录,就用cookie而session一般起到单机应用里全局变量的作用。

}

我要回帖

更多关于 58同城登录首页登录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信