django 設定cookie
阿新 • • 發佈:2018-12-04
使用者登入成功後送上cookies,讓使用者一段時間內不用再次登入,沒有cookies時則自動跳轉到登入頁面。
登入後臺:
class Login(View): def get(self, req): return render(req, "login/login.html") def post(self, req): username = req.POST.get("username") password = req.POST.get("password") is_exist = User.objects.filter(username=username, password=password) if is_exist: obj = redirect("/index/") obj.set_cookie("admin", "admin123")#cookie的key和value return obj else: return redirect("/login/")
看set_cookies原始碼可以在知道
def set_cookie(self, key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False): """ Sets a cookie. ``expires`` can be: - a string in the correct format, - a naive ``datetime.datetime`` object in UTC, - an aware ``datetime.datetime`` object in any time zone. If it is a ``datetime.datetime`` object then ``max_age`` will be calculated.
max_age為過多少秒cookie失效
path--為cookie在哪個路徑下有效
domain--為設定在哪個域名下生效
secure=False--為對HTTPS失效
httponly=True--為只允許在http傳遞,不能用js獲取
在httponly為False時,在瀏覽器的console中輸入document.cookiet通過js獲取到cookie
obj.set_signed_cookie("admin", "admin123",salt="danbro")
如果要對cookie加密則可以呼叫set_signed_cookie函式加密,底層使用base64加密的,base64加密可逆,而md5不可逆。
salt為加密引數,自定義。
解密為get_signed_cookie(“admin”,salt="danbro")函式
一般salt寫在配置檔案裡。