zoukankan      html  css  js  c++  java
  • Django基于Cookie装饰器实现用户认证

    def login(request):
        if request.method =="GET":
            return render(request,"login.html")
        elif request.method == "POST":
            u = request.POST.get("user")
            p = request.POST.get("password")
            print(u,p)
            if u ==user and p ==pwd:
                res = redirect("/index")
                res.set_cookie('user',u,max_age=5)   #设置cookie,关闭浏览器cookie失效。max_age=5表示5秒后cookie失效,需要重新登录
                return res
            else:
                return  render(request,"login.html")
    def index(request):
        v = request.COOKIES.get("user")
        if v:
            return render(request,"index.html",{"current_user":v})
        else:
            return redirect("/login")
    
    
    
    二, 基于装饰器实现用户认证
    FBV:
    
    def auth(func):
        def inner(reqeust,*args,**kwargs):
        v = reqeust.COOKIES.get('user')
        if not v:
          return redirect('/login')
        return func(reqeust, *args,**kwargs)
      return inner
    
    def login(request):
      if request.method =="GET":
        return render(request,"login.html")
      elif request.method == "POST":
        u = request.POST.get("user")
        p = request.POST.get("password")
        if u ==user and p ==pwd:
          res = redirect("/index")
          res.set_cookie('user',u,max_age=5)   #设置cookie,关闭浏览器cookie失效。max_age=5表示5秒后cookie失效,需要重新登录
             return res
        else:
          return  render(request,"login.html")
    @auth
    def index(request):
      v = request.COOKIES.get("user")
      return render(request,"index.html",{"current_user":v})
      
  • 相关阅读:
    【总结】进程和线程的区别
    为什么要求数据链路层帧的长度必须限制在一定范围内?
    常用正交表
    用正交表设计测试用例
    测试中的杀虫剂困境
    作品集-1:淘宝支付宝登陆框
    # 36氪开放日 • 杭州 • 11月10日 # 谈谈参会感受
    《在你身边,为你设计》读后感
    抱怨的背后
    更快的方式实现PHP数组去重
  • 原文地址:https://www.cnblogs.com/ixiaosong/p/6955999.html
Copyright © 2011-2022 走看看