1. 程式人生 > >django 設定cookie

django 設定cookie

使用者登入成功後送上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寫在配置檔案裡。