Django - 使用自定義中介軟體,實現登陸驗證
阿新 • • 發佈:2018-11-24
目錄
一、中介軟體 mymiddelware.py 檔案
from django.utils.deprecation import MiddlewareMixin from django.shortcuts import render, HttpResponse, redirect class MyMiddleware(MiddlewareMixin): def process_request(self, request): url = request.get_full_path() print(url) # print(request.path) is_login = request.session.get('is_login', None) if is_login or url.startswith('/appCsrf/csrf_login/'): print(is_login) return else: print('is_login is none') # 返回login頁面重新登陸,next表示從哪個頁面返回 return redirect('/appCsrf/csrf_login/?next=%s' % url) # return redirect('/appCsrf/csrf_login/') def process_response(self, request, response): return response
二、檢視檔案
from django.shortcuts import render, HttpResponse, redirect # Create your views here. def login(request): if request.method == 'GET': return render(request, 'csrf_login.html') else: # 從url內獲取next屬性值 next = request.GET.get('next') name = request.POST.get('name') pwd = request.POST.get('pwd') if name == 'name' and pwd == '123': if next: # 若為他頁跳轉,返回跳轉前他頁(主頁面) obj = redirect(next) else: # 若非他頁跳轉,返回指定頁面(主頁面) obj = redirect('/index/') # obj.set_cookie('is_login', True) request.session['is_login'] = True return obj else: return HttpResponse('使用者名稱或密碼錯誤') def shopping(request): return HttpResponse('確認登陸,可進行購物操作')
三、前端提交資料
<form action="" method="post"> {% csrf_token %} <input type="text" name="name"> <input type="text" name="pwd"> <input type="submit" value="提交"> </form>