19)django-cookie使用
Posted 狼来的日子里!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了19)django-cookie使用相关的知识,希望对你有一定的参考价值。
Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)
一:cookie
cookie在客户端浏览器的是以一个文件形式存在。
二:cookie生存周期
客户端向服务器发起请求
==》服务器要求验证
==》客户端输入用户名和密码
==》服务器验证,验证成功后,推送一串字符串给客户端,如{‘is_login‘:‘aaaaaaaaadddffffffd‘}表示客户端已登录过。
==>客户端保存这个串,下次客户端在来的时候,就不需要输入用户名和密码,
让客户端向服务器提供这一串。如果一致就是登录成功。上面提供的串就是cookie
三:cookie获取和设置
1)在服务器上获取cookie
服务器的cookie包含在request里面
name=request.COOKIES获取
备注:request里面的cookie是客户端浏览器传递过来的。所以可以通过浏览设置其他cookie(JS或者jquery设置)
request.COOKIES 用户发来数据时候带的所有cookie,就是字典 request.COOKIES.get("name")
2)在服务器上设置cookie
response=render(request,"index.html")
这个respone可以设置cookie,return的时候会一起发给客户端
response=render(request,"index.html") response=redirect("/index/") response.set_cookie("key,"value") #要设置cookie,只要不关闭浏览器一直生效,如果关闭就失效
3)设置cookie加密解密
上面的cookie是明文的
加密
obj=render(request,"index.html")
obj.set_signed_cookie("username",salt="adsf") 加密
解密
request.get_signed_cookie("username",salt="adsf")
4)cookie其他参数
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt=‘加密盐‘,...) 参数: key, 键 value=‘‘, 值 max_age=None, 超时时间(秒) expires=None, 超时时间(IE requires expires, so set it if hasn‘t been already.)(天) path=‘/‘, Cookie生效的路径,/ 表示根路径,特殊的:跟路径的cookie可以被任何url的页面访问 domain=None, Cookie生效的域名 secure=False, https传输 httponly=False 只能http协议传输,无法被javascript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
response.set_cookie("key,"value",max_age=10) #10秒过期 currnet_data=datetime.datetime.utcnow() currnet_data=currnet_data+10 response.set_cookie("key,"value",expires=currnet_data)#表示到什么时候点到期 cookie可以做两周,其他其他时间免登陆
5)cookie结合装饰器可以实现所用功能都需要登录验证
装饰器验证分为FBV和CBV
# 装饰器实现用户认证 #FBV装饰器 def auth(func): def inner(request,*args,**kwargs): v=request.COOKIES.get("username111") if not v: return redirect("/login/") return func(request,*args,**kwargs) #CDB装饰器(3种方法) def auth(func): def inner(request,*args,**kwargs): v=request.COOKIES.get("username111") if not v: return redirect("/login/") return func(request,*args,**kwargs) from django import views #djanog装饰器 from django.utils.decorators import method_decorator #装饰方式3 @method_decorator(auth,name="dispath") class Auth(views.View): #装饰方式2,这个方法还是嫌烦可以用方式3 @method_decorator(auth) def dispatch(self, request, *args, **kwargs): return super(Auth,self).dispatch(request, *args, **kwargs) #装饰方式1 #@method_decorator(auth) #这里只对get登陆验证,如果post等其他也要加,那每个都要加,所以可以用dispath def get(self,request): v=request.COOKIES.get("username111") return render(request,"index.html",{"current_user":v}) def post(self,request): v=request.COOKIES.get("username111") return render(request,"index.html",{"current_user":v})
以上是关于19)django-cookie使用的主要内容,如果未能解决你的问题,请参考以下文章
将Django-cookie sessionId链接到Channels 2.02连接?
基于Django-Cookie的CBV和FBV的用户验证装饰器
19 01 11 javascript ?????????????????????(???????????????) ??????????????????????????????(代码片段
14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段