1. 程式人生 > >Django之cookie

Django之cookie

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=zhanggen
) 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} )
View Code

Django之cookie