django系列8.3.2--django中間件實現登陸驗證(2) 我的構想邏輯

middleware.pyhtml

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函數能夠優化爲django

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.pysession

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.pyapp

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')
相關文章
相關標籤/搜索