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 request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            all_data = form.clean()   #获取post数据,例如 {'username': u'yang1', 'password': 111}
            exist = User.objects.filter(username = all_data['Form_username'],password = all_data['Form_password']).first()
            if exist:
                request.session['is_login'] = True  #设置session的随机字段值
                request.session['username'] = exist.username   #设置uname字段为登录用户
                return redirect('/home')
            else:
                return HttpResponse("账户或密码错误")
    else:
        form = LoginForm()
    return render(request, 'login.html', {'form': form})

@Check_Login
def home(request):
        username = request.session.get('uname', False)   #获取登录用户名
        return render(request, home.html', {'username': username}) #用户名渲染到前端页面

原文地址:https://www.cnblogs.com/midworld/p/10992000.html

时间: 2024-10-08 23:52:12

Django 之装饰器实现登录认证的相关文章

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之基于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基于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

Django装饰器验证登录

#登录验证装饰器 def auth(func): def inner(request,*args,**kwargs): username1 = request.session.get('username') username2 = request.COOKIES.get('username') if not username1 or not username2: return redirect('/login') return func(request, *args,**kwargs) retu

Django自定义装饰器

装饰器模板: def decorator(func): def wrapper(*args,**kwargs): return func(*args,**kwargs) return wrapper 装饰器应用: def log_in(func): '''身份认证装饰器, :param func: :return: ''' def wrapper(request,*args,**kwargs): if not request.session.get("is_login"): retur

python 用装饰器写登录

# 1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件), # 要求登录成功一次,后续的函数都无需再输入用户名和密码 # FLAG = False # def login(func): # def inner(*args,**kwargs): # global FLAG # '''登录程序''' # if FLAG: # ret = func(*args, **kwargs) # func是被装饰的函数 # return ret # else: # username = inpu

装饰器做权限认证

#!/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):

SpringMVC拦截器实现登录认证

博客以Demo的形式讲诉拦截器的使用 项目结构如图: 需要的jar:有springMVC配置需要的jar和jstl需要的jar SpringMVC包的作用说明: aopalliance.jar:这个包是AOP联盟的API包,里面包含了针对面向切面的接口.通常spring等其它具备动态织入功能的框架依赖这个jar spring-core.jar:这个jar 文件包含Spring 框架基本的核心工具类.Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心 ,当然你也可以在自己的应用系

python django 自定义 装饰器

# -*-coding:utf-8-*- __author__ = "GILANG ([email protected])" """ django 自定义用于view的装饰器 """ from functools import wraps def object_does_not_exist(func): """ 不带参数的装饰器 """ @wraps(func) de