python--Django之cookie的设置、获取,加密,删除

设置cookie之前我们先了解一下cookie,如下图,cookie以键值对的形式存在,

键和值以逗号分隔,不同的键值对以;(分号)隔开。

因此我们设置cookie时,也要以键值对的形式设置.

 cookie的设置

  1. 通过查看源代码我们可以知道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的获取  

  1. 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的删除

  1. cookie的获取方法为:response.delete_cookie方法,指定cookie的key,我们就可以删除cookie了
    def delete_cookie():
        response = HttpResponseRedirect('/index/')
        response.delete_cookie('username') #删除cookie
        return response

cookie的加密

  1. cookie的加密设置:与上面的cookie的设置相同,关键字不同
    response.set_signed_cookie('email',email,salt="salt")
  2. cookie的获取解密:与上面的cookie的获取相同,关键字不同
     
    responset.get_signed_cookie('email',email,salt="salt")


    cookie的加密和解密要对应相同的salt(盐值),这样才能确保网站的正常访问

猜你喜欢

转载自blog.csdn.net/young_foryou/article/details/86081720