Django 중간부품 middleware를 사용하여 로그인하지 않은 사용자 문제 해결
3317 단어 django
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')
이렇게 테스트를 통해 만약에 사용자가 시스템에 로그인한 적이 없다면 시스템의 주소를 입력하면 자동으로 로그인 페이지로 이동합니다!!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.