Django框架基礎之COOKIE
阿新 • • 發佈:2017-07-02
display 裝飾器 根路徑 wsgi and close 方式 signed span
max_age=None, 超時時間 以秒為單位
expires=None, 超時時間
path=‘/‘, cookie生效的路徑,/表示根路徑,根路徑的cookie可以被任何url的頁面訪問
domain=None, cookie生效的域名
secure=False, https傳輸
httponly=False 只能http協議傳輸,無法被JavaScript獲取(不是絕對,底層抓包可以獲取到也可以覆蓋)
cookie:
a. 保存在瀏覽器端“鍵值對”
b. 服務端可以向用戶瀏覽器端寫cookie
c. 客戶端每次方請求時,會攜帶cookie去
服務端給瀏覽器發送cookie:
obj=redirect(‘‘)
obj.set_cookie()
obj.set_signed_cookie(key,value,salt=‘‘,)
服務端從瀏覽器獲取cookie:
request.COOKIE.get(‘key‘)
request.get_signed_cookie()
cookie: key, 鍵
value=‘‘, 值
max_age=None, 超時時間 以秒為單位
expires=None, 超時時間
path=‘/‘, cookie生效的路徑,/表示根路徑,根路徑的cookie可以被任何url的頁面訪問
domain=None, cookie生效的域名
secure=False, https傳輸
httponly=False 只能http協議傳輸,無法被JavaScript獲取(不是絕對,底層抓包可以獲取到也可以覆蓋)
應用: a 投票
b 用戶登錄
1 在URL前加https://前綴表明是用SSL加密的。 你的電腦與服務器之間收發的信息傳輸將更加安全。https2 Web服務器啟用SSL需要獲得一個服務器證書並將該證書與要使用SSL的服務器綁定。 3 http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。http的連接很簡單,是無狀態的,... 4 HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議 5 要比http協議安全
利用cookie做用戶驗證:
1 def login(request): 2 if request.method==‘GET‘: 3 return render(request,‘login.htmlView Code‘) 4 else: 5 username=request.POST.get(‘username‘) 6 passwd=request.POST.get(‘passwd‘) 7 if username==‘alex‘ and passwd==‘123‘: 8 obj=redirect(‘/classes/‘) 9 # obj.set_cookie(‘ticket‘,‘dfsgtrhfgtd‘,max_age=‘10‘) #最大時效 ‘一個月免登陸’ 10 obj.set_signed_cookie(‘ticket‘,‘123‘,salt=‘666‘,max_age=10) #ticket=123:1dNbYh:Y3vofyscBVHMEOmld_Y7k-_iTjg 11 return obj 12 else: 13 return render(request,‘login.html‘)
1 #cookie驗證裝飾器函數 2 def login_later(func): 3 def wrapper(*args): 4 5 print(args[0]) #<WSGIRequest: GET ‘/classes/‘> 6 7 # ticket = args[0].COOKIES.get(‘ticket‘) 8 ticket=args[0].get_signed_cookie(‘ticket‘,salt=‘666‘) 9 if not ticket: 10 return redirect(‘/login/‘) 11 else: 12 return func(*args) 13 return wrapperView Code
Django框架基礎之COOKIE