Cookie、Session的具体使用
2024-08-28 12:05:08
定义
保存在客户端浏览器的键值对。
作用场景
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")
最新文章
- Java动态加载类在功能模块开发中的作用
- 添加IFrame导致内存溢出的解决过程(IE浏览器,目前发现了原因,还未解决)
- xargs的- n1参数
- J2EE它是一个框架?平台?规范?
- EasyUI - Menu 菜单
- MongoDB学习之--增删改查(1)
- GUID的获取
- C++ 设计模式 依赖倒置原则 简单示例
- Spring Boot Actutaur + Telegraf + InFluxDB + Grafana 构建监控平台之应用数据分析
- BZOJ_4864_[BeiJing 2017 Wc]神秘物质_Splay
- spring + quartz定时任务,以及修改定时任务
- js判断手机是安卓还是ios
- MySql 查询表中字段的数据类型
- 淘宝开源的H5移动开发UI框架genie-ui
- C# name scheme
- bash中 2>;&;1 &; 的解释
- Python(五)之迭代器和列表解析
- IP和java.net.InetAddress类的使用
- 判断app是否是第一次启动
- July 19th 2017 Week 29th Wednesday
热门文章
- Perl 子程序(函数)
- 【ZOJ3329】One Person Game
- Nginx源码完全注释(8)ngx_errno.c
- C++——堆、栈、静态存储区
- 安装了Anaconda之后,Maya运行报错,Python 找不到 Maya 的 Python 模块
- CS API 测试2
- A*搜索 概念
- [SoapUI] JsonPath is to JSON what XPath is to XML
- javascript总结41:表格全选反选,经典案例详解
- Linux下安装python,ftp,Ubuntu和centos配置静态ip以及下载地址