Cookie、Session的具体使用
定义
保存在客户端浏览器的键值对。
作用场景
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的具体使用的更多相关文章
- cookie,session,sessionid
cookie,session,sessionid http协议是无状态的,意思是每次请求的状态不会保存.因此,产生了cookie,session之类保存会话状态的机制.1.什么是cookiecooki ...
- Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期
servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...
- 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法
单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...
- 会话Cookie及session的关系(Cookie & Session)
会话Cookie及session的关系(Cookie & Session) 在通常的使用中,我们只知道session信息是存放在服务器端,而cookie是存放在客户端.但服务器如何使用sess ...
- cookie,session,token的定义及区别
参考了很多文章总结的. 1.cookie(储存在用户本地终端上的数据) 服务器生成,发送给浏览器,浏览器保存,下次请求同一网站再发送给服务器. 2.session(会话) a.代表服务器与浏览器的一次 ...
- Java web学习 Cookie&&Session
cookie&&session 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会 话技术就是记录这次会话中客户端的状态与数据的. 会话技术分为Coo ...
- Cookie&Session(会话技术)
一.Cookie技术 从打开一个游览器访问某个站点,到关闭这个游览器的整个过程成为一次会话 会话技术分为Cookie和Session Cookie:数据存储在客服端本地,减少对服务端的存储的压力,安全 ...
- Cookie Session和自定义分页
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- python Cookie Session 相关用法
Cookie一.前言1.http协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响 应情况直接影响,也不会直接影响后面的请 ...
- django - 总结 - cookie|session
Cookie是通过HTTP请求和响应头在客户端和服务器端传递的. 在Web开发中,使用session来完成会话跟踪,session底层依赖Cookie技术. --------------------- ...
随机推荐
- Reducing File Size
[Reducing File Size] 1.Unity strips out unused assets. The amount of assets in your project folder d ...
- Quaternion.identity是什么意思?
Quaternion.identity就是指Quaternion(0,0,0,0),
- 13-Oulipo(kmp裸题)
http://acm.hdu.edu.cn/showproblem.php?pid=1686 Oulipo Time Limit: 3000/1000 MS (Java/Others) Memo ...
- 27-水池数目(dfs)
水池数目 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地 ...
- dpdk中log的使用方法
1 log简介 dpdk中通过log系统记录相关的日志信息,每一条日志除日志内容外,还有两个附加信息,log级别和log类型.开发人员可根据级别和类型对日志信息进行过滤,只记录必要的日志.1.1 ...
- STM32F4库函数里面的RCC_DeInit(void)函数分析
void RCC_DeInit(void) { /*Set HSION bit,内部高速时钟使能HSI振荡器打开*/ RCC->CR |=(uint32_t)0x00000001; /*Rese ...
- Sql的行列转换
创建表scores 一.传统的行列转换 纵表转横表 我们要转成的横表是这样子的: pivot是sql server 2005 提供的运算符,所以只要数据库在05版本以上的都可以使用.主要用于行和列的转 ...
- 做个简单的Redis监控(源码分享)[转载]
Redis监控 Redis 是目前应用广泛的NoSQL,我做的项目中大部分都是与Redis打交道,发现身边的朋友也更多人在用,相对于memcached 来说,它的优势也确实是可圈可点.在随着业务,数据 ...
- UVALive 7749 Convex Contour (计算几何)
题意:给定上正方形,圆,三角形,让你求出包围它的最短的路径. 析:首先,如果是这种情况 三角形 三角形 三角形 正方形(圆) 三角形 三角形 三角形 ..这一种就是直接从左边直接连到正方形(圆),也 ...
- win32 zbar
一.zbar官方介绍 ZBar 是款桌面电脑用条形码/二维码扫描工具,支持摄像头及图片扫描,支持多平台,例如 iPhone,Andriod 手机,同时 ZBar封装了二维码扫描的 API 开发包. Z ...