Django基于Cookie装饰器实现用户认证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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})
  

 

以上是关于Django基于Cookie装饰器实现用户认证的主要内容,如果未能解决你的问题,请参考以下文章

Django-7

CSIC_716_20200113Django入门---forms组件session和cookie登录认证装饰器

基于Django-Cookie的CBV和FBV的用户验证装饰器

Django 之装饰器实现登录认证

django的auth认证,is_authenticate 和装饰器的2个方法,注销的功能,

Django(十六)基于模板的登录案例:登录装饰器csrf攻击方式及防护ajax的Post 的csrf开启写法生成验证码加验证码登录反向解析+传参