Django 중간부품 middleware를 사용하여 로그인하지 않은 사용자 문제 해결

3317 단어 django
add by zhj:
Django의 중간부품은 일반적으로 일반적인 문제를 처리하는 데 사용되며, 다섯 가지로 나뉘는데, 처리 순서에 따라 Requestmiddleware,view_middleware,exception_middleware,template_response_middleware,response_middleware, Django는 모든 중간부품에 인터페이스를 정의하는 것 같습니다. 예를 들어 Requestmiddleware 중간부품의 인터페이스는processrequest (self,request), 우리가 새로운 중간부품을 추가할 때, 이 인터페이스만 실현하면 됩니다.참조할 수 있음
http://djangobook.py3k.cn/2.0/chapter17/
https://docs.djangoproject.com/en/1.6/topics/http/middleware/
 
원문: http://www.52ij.com/jishu/1174.html
최근에 우리가 만든 새로운 프로젝트는 아직도 해결되지 않은 것이 하나 있다. 바로 사용자가 시스템에 로그인하지 않았을 때 로그인하지 않은 URL을 통해 시스템에 직접 들어갈 수 없다는 것이다. 이전에 자바로 만든 프로젝트는 struts2에 필터가 있고 스프링 MVC의 차단기를 사용한 것을 기억한다. 사실 이것들은 모두 Filter의 구성 요소이다. 이렇게 하면 필요한 기능을 실현하기 쉽다. 그러나 현재 프로젝트에 사용되고 있는django 프레임워크는 연구를 통해Django 안에 Filter와 유사한 구성 요소가 있습니까?유감스럽게도 Django에는 필터나 차단기와 유사한 개념이 발견되지 않았다.그러나 Django는 이러한 개념에 약하지 않은 새로운 기능인 middleware를 제공했다.자료를 조사한 결과 마침내 이 기능을 실현했다. 나는middleware를 썼다. 이것은 비login 페이지에 접근하는 모든 요청을 차단하고 쿠키를 검사하며 요청을login 페이지나 요청한 페이지로 돌리는 것을 판단한다.구체적인 방법은 다음과 같다. (1) 우선 나는 mymiddleware라는 앱을 만들었고 그 안에 mymiddleware를 추가했다.py(2)settings.py에서 이 중간부품을 불러옵니다. 우선 설정 파일의 INSTALLEDAPPS 끝에 'mymiddleware' 를 붙여서 MIDDLEWARECLASSES의 끝에'mymiddleware'를 붙인다.mymiddleware.QtsAuthentication Middleware', (3) mymiddleware를 구체적으로 쓴다.py, 다음과 같다
# -*- coding:utf-8 -*-

'''

Created on 2015-04-02



@author: anonymous

'''

#    

from urllib import quote



#     

from django.http import HttpResponseRedirect

from django.contrib.auth import SESSION_KEY



#     





class QtsAuthenticationMiddleware(object):

    

    def process_request(self, request):

        if not request.user.is_authenticated():

            return HttpResponseRedirect('/user_auth/login')

이렇게 테스트를 통해 만약에 사용자가 시스템에 로그인한 적이 없다면 시스템의 주소를 입력하면 자동으로 로그인 페이지로 이동합니다!!

좋은 웹페이지 즐겨찾기