定义

  保存在客户端浏览器的键值对。

作用场景

  1.登录校验

  2.保存用户的一些偏好信息

Cookie的查询

  查询所有的Cookie信息:

 request.COOKIES

  完整的Cookie信息就是一个大的字典,具体的Cookie用键值对保存在字典中,因此也可以用下面的这种方式查询单个Cookie信息。

 request.COOKIES["user"]

   查询原生Cookie信息:

 request.COOKIES.get("yinzhou")

  查询加盐版Cookie信息:

request.get_signed_cookie("user",salt="woshishuaige",default=None) #获取加盐版cookie信息,如果获取不到就设置为None

要获取的key和salt要和设置的相同才可以成功查询

Cookie的设置

  原生版Cookie设置

 obj.set_cookie("yinzhou","woshishuaige")

指定key、value即可。

  加盐版Cookie设置

 set_signed_cookie("user",user,salt="woshishuaige")
 def index(request):
# cook = request.COOKIES.get("yinzhou") #获取原生版COOKIE信息
print(request.COOKIES)
print("************",request.COOKIES["user"])
cook_salt = request.get_signed_cookie("user",salt="woshishuaige",default=None) #获取加盐版cookie信息,如果获取不到就设置为None
if cook_salt:
return render(request, "index.html")
else:
return redirect(reverse("login")) def login(request):
# 打印所有完整的COOKIES信息
print(request.COOKIES)
if request.method == "POST":
user = request.POST.get("user")
pwd = request.POST.get("pwd")
if user == "root" and pwd == "admin":
obj = redirect(reverse("index"))
# obj.set_cookie("yinzhou","woshishuaige") 原生COOKIES
obj.set_signed_cookie("user",user,salt="woshishuaige") # 加盐版COOKIE
return obj
return render(request,'login.html')

Session

定义

  Session是高级版的Cookie,Session可以解决原生Cookie的安全性低的问题。其次Session在服务端,Cookie在客户端,但是Session需要依赖于Cookie的支持才能工作。

需要注意的几点

  Session的步骤:

  1.服务端生成Session_key,自己保留一份,同时给客户端发送一份,Session_key用于唯一标识一个用户,关于用户的数据保存在Session_data中。

  2.当客户端再次访问需要登录验证页面的时候,会携带之前服务端发送的Session_key访问页面,在显示页面之前,服务端会与自己存放在数据库中的Session_key做校验,若一致,则显示页面,不一致则返回登录页面。

  其他:

    1.使用 request.session.delete()方法会删除该用户对应的Session_key在django_session表中的的记录。

    2.一个用户会创建一个Session_key对象。

 def check(fun):
def inner(request,*args,**kwargs):
if request.session.get("woshishuaige",None):
# Session通过则显示页面
ret = fun(request,*args,**kwargs)
return ret
else:
#session不通过则返回到登录界面
url = request.get_full_path()
return redirect('/login/?from={}'.format(url))
return inner @check
def index(request):
return render(request,"index.html") def login(request):
url = request.GET.get("from")
user = request.POST.get("user")
pwd = request.POST.get("pwd")
if request.method == "POST":
if user == "root" and pwd == "admin":
request.session["woshishuaige"]="liuyinzhou"
return redirect(url)
else:
return redirect(url)
return render(request,"login.html") def logout(request):
ret = redirect(reverse("login"))
ret.delete_cookie("user")
return ret @check
def home(request):
return render(request,"home.html")

Cookie、Session的具体使用的更多相关文章

  1. cookie,session,sessionid

    cookie,session,sessionid http协议是无状态的,意思是每次请求的状态不会保存.因此,产生了cookie,session之类保存会话状态的机制.1.什么是cookiecooki ...

  2. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

  3. 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法

    单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...

  4. 会话Cookie及session的关系(Cookie & Session)

    会话Cookie及session的关系(Cookie & Session) 在通常的使用中,我们只知道session信息是存放在服务器端,而cookie是存放在客户端.但服务器如何使用sess ...

  5. cookie,session,token的定义及区别

    参考了很多文章总结的. 1.cookie(储存在用户本地终端上的数据) 服务器生成,发送给浏览器,浏览器保存,下次请求同一网站再发送给服务器. 2.session(会话) a.代表服务器与浏览器的一次 ...

  6. Java web学习 Cookie&&Session

    cookie&&session 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会 话技术就是记录这次会话中客户端的状态与数据的. 会话技术分为Coo ...

  7. Cookie&Session(会话技术)

    一.Cookie技术 从打开一个游览器访问某个站点,到关闭这个游览器的整个过程成为一次会话 会话技术分为Cookie和Session Cookie:数据存储在客服端本地,减少对服务端的存储的压力,安全 ...

  8. Cookie Session和自定义分页

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  9. python Cookie Session 相关用法

    Cookie一.前言1.http协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响 应情况直接影响,也不会直接影响后面的请 ...

  10. django - 总结 - cookie|session

    Cookie是通过HTTP请求和响应头在客户端和服务器端传递的. 在Web开发中,使用session来完成会话跟踪,session底层依赖Cookie技术. --------------------- ...

随机推荐

  1. Unity牛逼的2D纹理功能

    [Unity牛逼的2D纹理功能] 1.可直接将贴图生成成为Cubemap. 2.自动生成Mipmap. 3.查看纹理被当前场景哪些对象引用.在Project窗口中,右击图像,选择 参考:file:// ...

  2. 解剖Nginx·模块开发篇(3)ngx_http_hello_world_module 模块的基本函数实现

    还记得我们定义过一个结构体如下吗? typedef struct { ngx_str_t output_words; } ngx_http_hello_world_loc_conf_t; 它就是 He ...

  3. sqlserver三种数据集合运算

    2.1   并集运算(UNION) (1)UNION ALL(不删除重复行) Code: 1 SELECT empID,empName,position,degree 2 FROM Employees ...

  4. Openssl smime命令

    一.简介 S/MIME工具,用于处理S/MIME邮件,它能加密.解密.签名和验证S/MIME消息 二.语法 openssl smime [-encrypt] [-decrypt] [-sign] [- ...

  5. ECS 游戏架构 理解

    转载自:http://blog.csdn.net/i_dovelemon/article/details/25798677 理解 组件-实体-系统 (ECS \CES)游戏编程模型 - 博客频道   ...

  6. tp5写日志

  7. JVM致命错误日志(hs_err_pid.log)解读

    JVM致命错误日志(hs_err_pid.log)解读 摘自:https://blog.csdn.net/u013938484/article/details/51811400 2016年07月02日 ...

  8. clickonce发布winform必备组件

    ClickOnce 发布,在系统必备中勾选了 .NET Framework 4,并选择了"从与我的应用程序相同的位置下载系统必备组件"时,执行发布,会提示缺少很多文件 使用 Pac ...

  9. [GO]获取命令行参数

    package main import ( "os" "fmt" ) func main() { list := os.Args n := len(list) ...

  10. CentOS下的Git服务器

    [Gitosis]CentOS下的Git服务器:Gitosis  [摘要]         详细介绍如何在CentOS上配置Gitosis        我们很多人知道Git可能是从Github开始的 ...