1. 程式人生 > >Django框架基礎之COOKIE

Django框架基礎之COOKIE

display 裝飾器 根路徑 wsgi and close 方式 signed span

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加密的。 你的電腦與服務器之間收發的信息傳輸將更加安全。
2 Web服務器啟用SSL需要獲得一個服務器證書並將該證書與要使用SSL的服務器綁定。 3 http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。http的連接很簡單,是無狀態的,... 4 HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議 5 要比http協議安全
https

利用cookie做用戶驗證:

技術分享
 1 def login(request):
 2     if request.method==GET:
 3         return render(request,login.html
) 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)
View Code 技術分享
 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 wrapper
View Code

Django框架基礎之COOKIE