• django 生成cookie


     Cookie的作用是为了识别当前用户的身份,当前用户访问服务器后,服务器会根据用户信息生成session(会话),然后将session保存cookie中,并响应给用户。用户再下次访问时带上cookie信息提交给服务器,服务器拿到cookie里面的session解密出来相关信息,确认当前访问的用户是同一个用户,再才能进行后续的业务操作。大致如此!

    而Django提供以下方式来操作cookie对象:

    #获取Cookie,与python的字典读取方式一致
    request.COOKIES("uuid")
    request.COOKIES.get("uuid")
    
    #在响应内容中添加cookie,将cookie返回给浏览器
    return HttpResponse("hello world")
    response.set_cookie("key","value")
    return response
    
    #在响应内容中删除cookie
    return HttpResponse("Hello world")
    response.delete_cookie("key")
    return response

    简而言之,操作cookie对象无非就是对cookie的获取、添加、删除处理。添加cookie信息是使用set_cookie方法实现的,该方法是由响应类HttpResponseBase定义。

    set_cookie方法定义了9个函数参数,每个参数的说明如下:

    • key  设置cookie的key,类似字典的key。
    • value 设置cookie的value,类似字典的value。
    • max_age 设置cookie的有效时间,以秒为单位。
    • expires 设置cookie的有效时间,以日期格式为单位。
    • path 设置cookie的生效路径,默认值为根目录(网站首页)。
    • domain 设置cookie生效的域名。
    • secure 设置传输方式,若为False,则使用HTTP,否则使用HTTPS。
    • httponly 设置是否只能使用HTTP协议传输。
    • samesite 设置强制模式,可选值为lax或strict,主要防止CSRF攻击。

    set_cookie 设置cookie时,value的值是需要自己加密的,cookie直接显示value的内容,如下:

    def create_cookie(request):
        r = redirect(reverse("myApp:index"))
        #添加cookie
        r.set_cookie("uid","cookie_value")
        print(r)
        return r

    在浏览器中,cookie的值直接显示:cookie_value的内容,这种是非常不安全的,用户的信息被截取后就完全暴露出去了。因此,使用set_cookie进行设置时,需要自行对cookie的value值进行加密。

    在django中内置Cookie的加密方法可以使用set_signed_cookie方法,set_signed_cookie的参数如下:

    • key 设置cookie的key,类似字典的key。
    • value 设置cookie的value,类似字典的value。
    • salt 设置加密盐,用于数据的加密处理。
    • **kwargs 设置可选参数,用于设置set_cookie 的参数。 

    下面是set_signed_cookie 的使用效果:

    def create_cookie(request):
        r = redirect(reverse("myApp:index"))
        #设置cookie的有效时间为10秒
        r.set_signed_cookie("uuid","uid",salt="myJc",max_age=10)
        print(r)
        return r

    在浏览器中的效果如下:

  • 相关阅读:
    IOS开发--常用的基本GDB命令
    iOS 开发技巧-制作环形进度条
    提高Objective-C代码质量心机一:简化写法
    iOS 删除 Main.storyboard 和 LaunchScreen.storyboard
    iOS扫一扫功能开发
    ASP.NET中Json的处理
    WebService的使用
    嵌入Web资源的方法
    URL重写 UrlRewrite
    ASP.NET全局文件与防盗链
  • 原文地址:https://www.cnblogs.com/JcHome/p/16133098.html
Copyright © 2020-2023  润新知