django系列8.3.2--django中间件实现登录验证(2) 个人构想逻辑
middleware.py
from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import render,redirect,reverse
from django.shortcuts import HttpResponse class SessionAuth(MiddlewareMixin): def process_request(self,request):
print("session认证开始") white_list = [reverse('login'),]
path = request.path
print(path)
if path in white_list:
print("直接通过")
return None
else:
status = request.session.get("session_login")
if status:
return None
else:
return redirect('login') def process_response(self, request, response):
return response
其中process_request函数可以优化为
def process_request(self,request):
print("session认证开始") white_list = [reverse('login'),] # 设置白名单
path = request.path
print(path)
if path not in white_list:
status = request.session.get('session_login')
if not status:
return redirect('login')
urls.py
from django.conf.urls import url
from django.contrib import admin
from app01 import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', views.index, name="index"),
url(r'^login/', views.login, name="login"),
url(r'^logout/', views.logout, name="logout"),
# url(r'^loginview/', views.LoginView.as_view(), name="loginview"),
]
views.py
def login(request):
if request.method == 'GET':
print("app中的视图函数")
return render(request,"login.html")
else:
username = request.POST.get("username")
password = request.POST.get("password")
ret_obj_list = models.UserInfo.objects.filter(username=username,password=password)
if ret_obj_list.exists():
request.session['session_login'] = True
request.session['username'] = username
# data = {"session_login":True,"user":username}
return redirect("index")
else:
return render(request,"login.html")
def index(request):
return render(request, "index.html")
def logout(request):
request.session.flush()
return redirect('login')
django系列8.3.2--django中间件实现登录验证(2) 个人构想逻辑的更多相关文章
- 自定义Django中间件(登录验证中间件实例)
前戏 我们在前面的课程中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面.我们通过给几个特定视图函数加装饰器实现了这个需求.但是以后添加的视图函数可能也需要加上装饰 ...
- django系列8.3--django中间件实现登录验证(1)
中间件版的登录验证需要依靠session,所以数据库中要有django_session表. urls.py from django.conf.urls import url from app01 im ...
- Django 中间件版登录验证
中间件版的登录验证需要依靠session,所以数据库中要有django_session表. urls.py # urls.py from django.conf.urls import url fro ...
- Django通过中间件实现登录验证demo
前提:中间件版的登录验证需要依靠session,所以数据库中要有django_session表. from django.conf.urls import url from django.contri ...
- django中间件及中间件实现的登录验证
1.定义 一个用来处理Django的请求和响应的框架级别的钩子(函数),相对比较轻量级,并且在全局上改变django的输入与输出(使用需谨慎,否则影响性能) 直白的说中间件就是帮助我们在视图函数执行之 ...
- Django学习笔记(15)——中间件
当Django处理一个Request的过程是首先通过中间件,然后再通过默认的URL方式进行的.我们可以在Middleware这个地方把所有Request拦截住,用我们自己的方式完成处理以后直接返回Re ...
- Django中间件(中间件版登陆验证、访问频率限制)
一.介绍 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责做一些特定的功能. ...
- django系列8.1--django的中间件01 自定义中间件的5个方法
一.Django中的中间件 Django中间件定义: Middleware is a framework of hooks into Django's request/response process ...
- Django 系列博客(七)
Django 系列博客(七) 前言 本篇博客介绍 Django 中的视图层中的相关参数,HttpRequest 对象.HttpResponse 对象.JsonResponse,以及视图层的两种响应方式 ...
随机推荐
- React基本实例
学习React不是一蹴而就的事情,入门似乎也没那么简单.但一切都是值得的. 今天给大家带来一个详细的React的实例,实例并不难,但对于初学者而言,足够认清React的思考和编写过程.认真完成这个实例 ...
- We could not complete your iTunes Store request
We could not complete your iTunes Store request.An unknown error occurred(502). There was an error i ...
- 通过django创建数据库的方法
在models 文件中实现 a. from django.db import models class UserInfo(models.Model): #id列, 自增, 主键 #用户名列, 字符串类 ...
- ATL控件签名之后页面还提示“在此页面上的Activex控件和本页上的其他部分及交互可能不安全”
ATL控件正常签名打包,然后安装之后还是会提示: 没理由啊,签名是花钱搞得正当的签名.后来查了资料才知道这还不够,需要在创建ATL控件的时候继承一个IObjectSafetyImpl 类 知道了原因, ...
- IE浏览器中不支持cookie问题
/** * Cookie plugin * * Copyright (c) 2006 Klaus Hartl (stilbuero.de) * Dual licensed under the MIT ...
- Maven(二)了解Maven仓库
转载自: http://blog.csdn.net/gebitan505/article/details/46233981 在使用 Maven 之前,我们必须要了解一下 Maven 到底是怎样管理 j ...
- 《C语言基础日常笔记》
1. 类型转换-----------------20130902 a, 浮点数(包括单精度与双精度)赋值给整型变量时,舍弃浮点数的小数部分,直接将其整数部分存放在整型变量里. b, 整型变量赋值给浮点 ...
- awk编程基础
一.awk介绍 awk(名字来源于三个创始人姓氏首字母)是linux系统下文本编辑工具,是一门编程语言,有自己的基本语法和流程控制.函数.awk简单高效. 二.awk的运行方法 例子:使用冒号:分 ...
- 基于分布式思想下的RPC解决方案--笔记
分布式: RPC可以提高系统稳定性,比如说,我们的订单服务程序更新出BUG,导致内存溢出,是这台服务器宕机了,但是它只会影响的整个系统的订单业务部分,对于用户注册登录等业务没有影响,同样对于系统的日志 ...
- ie8开发人员工具无法使用,按f12任务栏里出现任务,但是窗体不弹出
楼主解决了么,刚出现你这样的问题,找了N久,终于解决了,他娘的,偏方啊任务栏不是出现那个箭头么,点击后没反应是吧在缩略图上点右键-最大化,然后就出来了,ctrl+p反正是可以出来调试模式 神人哪,IE ...