美文网首页
中间件跳转到登陆页面

中间件跳转到登陆页面

作者: 空山晚来秋 | 来源:发表于2018-03-26 18:22 被阅读0次

    网站需要登陆才提供服务,因此需要在未登录时跳转到登陆页面.

    本网站在登陆之后会存username的cookie, 因此通过检测该cookie是否存在判断用户是否登陆

    自定义的middleware写在login下
    login目录结构如下


    20180326181811.png

    setting中增加middleware最后一条

    MIDDLEWARE_CLASSES = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        # 'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
        'login.LoginMiddleware.QtsAuthenticationMiddleware',
    ]
    

    装饰器代码

    # coding=utf-8
    
    from django.shortcuts import render,HttpResponse,redirect,HttpResponseRedirect
    
    try:
        from django.utils.deprecation import MiddlewareMixin  # Django 1.10.x
    except ImportError:
        MiddlewareMixin = object  # Django 1.4.x - Django 1.9.x
    
    class QtsAuthenticationMiddleware(MiddlewareMixin):
        def process_request(self, request):
    
            if request.path != '/login/':
                if  request.COOKIES.get('username',None):
                    pass
                else:
                    return HttpResponseRedirect('/login/')
    

    这样就可以实现未登录时跳转到登陆页面

    相关文章

      网友评论

          本文标题:中间件跳转到登陆页面

          本文链接:https://www.haomeiwen.com/subject/dporcftx.html