定义

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

作用场景

  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. Reducing File Size

    [Reducing File Size] 1.Unity strips out unused assets. The amount of assets in your project folder d ...

  2. Quaternion.identity是什么意思?

    Quaternion.identity就是指Quaternion(0,0,0,0),

  3. 13-Oulipo(kmp裸题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1686 Oulipo Time Limit: 3000/1000 MS (Java/Others)    Memo ...

  4. 27-水池数目(dfs)

    水池数目 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地 ...

  5. dpdk中log的使用方法

    1 log简介    dpdk中通过log系统记录相关的日志信息,每一条日志除日志内容外,还有两个附加信息,log级别和log类型.开发人员可根据级别和类型对日志信息进行过滤,只记录必要的日志.1.1 ...

  6. STM32F4库函数里面的RCC_DeInit(void)函数分析

    void RCC_DeInit(void) { /*Set HSION bit,内部高速时钟使能HSI振荡器打开*/ RCC->CR |=(uint32_t)0x00000001; /*Rese ...

  7. Sql的行列转换

    创建表scores 一.传统的行列转换 纵表转横表 我们要转成的横表是这样子的: pivot是sql server 2005 提供的运算符,所以只要数据库在05版本以上的都可以使用.主要用于行和列的转 ...

  8. 做个简单的Redis监控(源码分享)[转载]

    Redis监控 Redis 是目前应用广泛的NoSQL,我做的项目中大部分都是与Redis打交道,发现身边的朋友也更多人在用,相对于memcached 来说,它的优势也确实是可圈可点.在随着业务,数据 ...

  9. UVALive 7749 Convex Contour (计算几何)

    题意:给定上正方形,圆,三角形,让你求出包围它的最短的路径. 析:首先,如果是这种情况  三角形 三角形 三角形 正方形(圆) 三角形 三角形 三角形 ..这一种就是直接从左边直接连到正方形(圆),也 ...

  10. win32 zbar

    一.zbar官方介绍 ZBar 是款桌面电脑用条形码/二维码扫描工具,支持摄像头及图片扫描,支持多平台,例如 iPhone,Andriod 手机,同时 ZBar封装了二维码扫描的 API 开发包. Z ...