django 中间件实现登录拦截器


1.前言

JavaWeb Struts2的拦截器我们都能很熟悉,在请求交给Action处理之前,先在拦截器中处理,处理完之后再交给Action。 
在Django中如何实现相同的效果?

2.Django中间件

这个是我的项目的目录结构。 

首先,先在app目录(也就是我项目的web目录)中新建一个文件命名为middleware.py 

里面加入以下代码:

from django.shortcuts import render,HttpResponse,redirect,HttpResponseRedirect



try:

    from django.utils.deprecation import MiddlewareMixin  # Django 1.10.x
except ImportError:
    MiddlewareMixin = object  # Django 1.4.x - Django 1.9.x

class SimpleMiddleware(MiddlewareMixin):
    def process_request(self, request):

        if request.path != '/login/' and request.path != '/Web/CheckCode/':
            if  request.session.get('user',None):
                pass
            else:
                return HttpResponseRedirect('/login/')

 

在process_request中处理请求,process_response处理响应。 
在process_request方法中,返回值为HttpResponse类型的对象的时候不交给普通的控制器处理,直接返回给浏览器,返回值为None的时候,请求处理完之后交给普通的控制器处理。 
在settings.py文件的中间件配置中我们刚刚的中间件。 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM