python--Django之cookie的設定、獲取,加密,刪除
阿新 • • 發佈:2019-01-09
設定cookie之前我們先了解一下cookie,如下圖,cookie以鍵值對的形式存在,
鍵和值以逗號分隔,不同的鍵值對以;(分號)隔開。
因此我們設定cookie時,也要以鍵值對的形式設定.
cookie的設定
- 通過檢視原始碼我們可以知道cookie中可以設定的引數如下:
def set_cookie(self, key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None):
key:鍵
value:值
max_age:設定過期時間(秒),如果未設定預設關閉瀏覽器失效
expires:設定過期時間,時間戳的形式(1970離現在的時間)
path:當前主域名
domain:子域名
secure:True true意味著"指示瀏覽器僅通過 HTTPS 連線傳回 cookie。這可以確保 cookie ID 是安全的,且僅用於 使用 HTTPS 的網站。如果啟用此功能,則 HTTP 上的會話 Cookie 將不再起作用
httponly=False 設定HttpOnly=true的cookie不能被js獲取到,無法用document.cookie打出cookie的內容
例項:response = HttpResponseRedirect('/index/') response.set_cookie('email',user.email,10) return response
cookie的獲取
- cookie的獲取方法為:response.cookie.get('cookie設定的引數')
下面我們通過一個裝飾器來實現cookie的獲取def loginValid(fun): def inner(request,*args,**kwargs): cookie = request.COOKIES email = cookie.get('email') if email: return fun(request,*args,**kwargs) else: return HttpResponseRedirect("/login/") return inner @loginValid def index(request): return render_to_response("index.html",locals())
cookie的刪除
- cookie的獲取方法為:response.delete_cookie方法,指定cookie的key,我們就可以刪除cookie了
def delete_cookie(): response = HttpResponseRedirect('/index/') response.delete_cookie('username') #刪除cookie return response
cookie的加密
- cookie的加密設定:與上面的cookie的設定相同,關鍵字不同
response.set_signed_cookie('email',email,salt="salt")
- cookie的獲取解密:與上面的cookie的獲取相同,關鍵字不同
responset.get_signed_cookie('email',email,salt="salt")
cookie的加密和解密要對應相同的salt(鹽值),這樣才能確保網站的正常訪問