• django的cookie验证_django


    一、cookie

    cookie:客户端浏览器上的一个文件(类似字典,键值对形式存在),换电脑或者换浏览器都不生效

    1、基于cookie做用户验证

     1 user_info={
     2     "test":{"pwd":"test"},
     3     "chen":{"pwd":"chen"},
     4 
     5 }
     6 def login_test(request):
     7     if request.method=="GET":
     8         return render(request,"index_login.html")
     9     if request.method=="POST":
    10         u=request.POST.get("username")
    11         p=request.POST.get("password")
    12         print(u,p)
    13         if not user_info.get(u):
    14             return render(request,"index_login.html")
    15         if user_info.get(u)["pwd"]==p:
    16             #验证正确,返回cookie和跳转
    17             res=redirect("/index/")
    18             res.set_cookie("username",u)
    19             return res
    20         else:
    21             return redirect("/login_test/")
    22 
    23 def index(request):
    24     v=request.COOKIES.get("username")
    25     if not v:
    26         return redirect("/login_test/")
    27     return render(request,"index.html",{"current_user":v})

    2、cookie的参数

     1 def cookie(request):
     2     #获取cookie
     3     request.COOKIES.get("username")
     4     request.COOKIES["username"]
     5 
     6     #发送cookie到客户端,关闭浏览器失效
     7     u=123
     8     res="redirect('/index/')"
     9     
    10     res.set_cookie("username",u)
    11 
    12 
    13     #其他参数
    14     #设置超时时间:
    15     #超时时间,失效max_age(多少秒之后失效)
    16     res.set_cookie("username", "value",max_age=10)
    17     #超时时间,失效expires(到什么时间点失效)
    18     import datetime
    19     current_date=datetime.datetime.utcnow()
    20     print(current_date)
    21     current_date=current_date+datetime.timedelta(seconds=5)
    22     res.set_cookie("username", "value", expires=current_date) #5秒之后失效
    23 
    24     #path="/" cookie生效的路径,/路径下的可以被所有url访问,如设置/index,只能被/index的url访问
    25 
    26 
    27     return res    

    设置cookie是密文形式:带签名的cookie:

    设置:

    res.set_signed_cookie("username","chen",salt="sdfadf")

    获取:

    request.get_signed_cookie("username",salt="sdfadf")

    3、利用装饰器完成用户验证

    FBV:

    CBV:

    只对其中的一个请求做用户验证:(不能直接加)

    对所有的函数做验证:

  • 相关阅读:
    「golang」go-micro指定consul地址
    「postgres」无数据则插入,有数据不做插入
    「postgres」导出数据以及分割数据
    「postgre」调整表结构
    「postgre」查看DB的物理占用空间
    「postgre」INT最大值
    「postgre」服务重启
    「golang」关于TIME_WAIT优化
    深入理解Spring Boot属性配置文件
    springboot 中的commandLineRunners接口
  • 原文地址:https://www.cnblogs.com/chenxiaozan/p/13065697.html
Copyright © 2020-2023  润新知