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})
  
时间: 2024-12-29 13:46:10

Django基于Cookie装饰器实现用户认证的相关文章

django之基于cookie和装饰器实现用户认证

一.使用Django自带的decorator 通常情况,使用 函数定义的view,可以直接使用 login_required 直接装饰 @login_required def index(request): if request.method == "GET": return render(request, "index.htm") def user_login(request): if request.method == "GET": retu

Django 之装饰器实现登录认证

def check_login(func): # 自定义登录验证装饰器 def warpper(request, *args, **kwargs): is_login = request.session.get('is_login', False) if is_login: func(request, *args, **kwargs) else: return redirect("/login") return warpper def login_user(request): if r

flask中的endpoint、自定义转化器、与djnago中session区别、利用装饰器实现登录认证

flask路由中的endpoint 与自定义转化器 ''' endpoint主要用于 反向解析, 例如:login函数中配的路由是/login,其中endpoint='lg' 则在其他函数,可以用 url=url_for('lg'),redirect(url)直接访问login函数 ''' ''' 自定义转化器,可以用来动态更新url_for 的跳转路由 其中 to_python主要是给后端的,可以对路由参数做修改 to_url是给前端url的,可以更新指定的url ''' flask与djan

Django View使用装饰器捕获数据库连接异常

"来不及解释了",直接上代码. from django.shortcuts import render, redirect from models import Hosts from django import forms # Create your views here. def database_error(request, message):     if message == '' or message is None:         message = 'Error det

Redis+Django(Session,Cookie、Cache)的用户系统

转自 http://www.cnblogs.com/BeginMan/p/3890761.html 一.Django authentication django authentication 提供了一个便利的user api接口,无论在py中 request.user,参见 Request and response objects .还是模板中的 {{user}} 都能随时随地使用,如果从web开发角度来看,其实无非就是cookie与session的运用. 在项目首页,在登陆和注销状态下分别输出

Django中decorators装饰器的使用

1.CBV实现的登录视图 class LoginView(View): def get(self, request): """ 处理GET请求 """ return render(request, 'login.html') def post(self, request): """ 处理POST请求 """ user = request.POST.get('user') pwd = re

装饰器做权限认证

#!/usr/bin/env python #_*_coding:utf-8_*_ from django.shortcuts import render,HttpResponse allow_list = ['admin'] def cron_allow(request,**kwargs): if request.user.username in allow_list: return True else: return False def check_cron_permission(fun):

Flask之基于route装饰器的路由系统(源码阅读解析)

一 路由系统 1. 在flask中配置URL和视图函数的路由时,首先需要在main.py中实例化一个app对象: 1 from flask import Flask, render_template 2 3 app = Flask(__name__) 2. 然后通过app实例的route方法装饰视图函数,实现路由的配置: 1 @app.route('/') 2 def hello_world(): 3 return 'Hellow World!' 3. 所有这里需要关注在Flask类里定义的ro

装饰器实现用户验证登录

在实现用户验证的登录的时候可以使用装饰器工厂产生装饰器,让装饰器得到参数,从而判断登录类型,并验证用户登录条件,代码实现如下: def login_type(type): def Outer(F): def inner(): if type == 'QQ': name = input('请输入用户名:') psw = input('请输入密码:') if name == '汪凡' and psw == '198765': print('登陆成功!') return F() else: print