Django之cookie
阿新 • • 發佈:2017-06-23
col import 參數 *args 安全 closed 用戶 isp salt
前言
HTTP協議 是短連接、且狀態的,所以在客戶端向服務端發起請求後,服務端在響應頭 加入cokie響應給瀏覽器,以此客戶端的狀態;
cook是來自服務端,保存在瀏覽器的鍵值對,主要應用於用戶登錄;
cookie如此重要!!那麽如何在Django應用cookie呢?
一、Django應用cookie
參數介紹
1、max_age=1 :cookie生效的時間,單位是秒
2、expires:具體過期日期
3、path=‘/‘:指定那個url可以訪問到cookie;‘/’是所有; path=‘/‘
4、 domain=None(None代表當前域名):指定那個域名以及它下面的二級域名(子域名)可以訪問這個cookie
5、secure=False:https安全相關
6、httponly=False:限制只能通過http傳輸,JS無法在傳輸中獲取和修改
設置cookie
1.普通
obj.set_cookie("tile","zhanggen",expires=value,path=‘/‘ )
2.加鹽
obj.set_signed_cookie(‘k‘,‘v‘,salt="zhangge")
獲取cookie
1、普通
obj.set_signed_cookie(‘k‘,‘v‘,salt="zhangge")
2、加鹽
cookies=request.get_signed_cookie(‘k‘,salt=‘zhanggen‘)
最後給每個視圖函數裝飾cookie認證功能
from until import mysqlhelper from django.shortcuts import HttpResponse,render,redirect import json import datetime from datetime import timedelta def cookie_auth(func): def weaper(request,*args,**kwargs): cookies = request.get_signed_cookie(‘k‘, salt=‘zhanggenView Code‘) if cookies == ‘v‘: return func(request) else: return HttpResponse(‘OK‘) return weaper now = datetime.datetime.utcnow() delta = timedelta(seconds=10) def login(request): if request.method==‘GET‘: return render(request,‘login.html‘) else: name = request.POST.get(‘N‘) pwd=request.POST.get(‘P‘) if name=="alex" and pwd=="123": obj=redirect("/modal") # obj.set_cookie("tile","zhanggen",max_age=1,) value=now+delta obj.set_cookie("tile","zhanggen",expires=value,path=‘/‘,domain=None,secure=False,httponly=False) obj.set_signed_cookie(‘k‘,‘v‘,salt="zhanggen",) return obj else: return render(request,‘login.html‘) def test(request): return render(request,‘layout.html‘) @cookie_auth def modal(request): sql=‘‘‘ SELECT teacher.id as tid,teacher.`name`as tname,class.title FROM day64.teacher LEFT JOIN teacher_class ON day64.teacher.id=day64.teacher_class.tid LEFT JOIN day64.class ON day64.teacher_class.cid=day64.class.id; ‘‘‘ teacher_list= mysqlhelper.get_list(sql,[]) res={} for row in teacher_list: tid=row["tid"] if tid in res: res[tid]["titles"].append(row["title"]) else: res[tid]={‘tid‘:row["tid"],‘tname‘:row["tname"],‘titles‘:[row["title"],]} class_list=mysqlhelper.get_list("SELECT id ,title FROM day64.class" ,[]) return render(request,‘modal.html‘,{"list":res.values(),"class_list":class_list} )
Django之cookie