Django - 使用自定义中间件,实现登陆验证

目录

一、中间件 mymiddelware.py 文件

二、视图文件

三、前端提交数据


 Django - 使用自定义中间件,实现登陆验证_第1张图片

一、中间件 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('确认登陆,可进行购物操作')

三、前端提交数据

{% csrf_token %}

 

你可能感兴趣的:(Django)