美文网首页
Django session验证登录

Django session验证登录

作者: 山高路远_海深不蓝 | 来源:发表于2021-05-12 15:43 被阅读0次

    简要说明

    • 使用中间件对每个页面都验证登录状态,验证登录的方法除外,否则会陷入循环
    • 登录状态设置使用session
      • 在验证登录的方法中:验证成功时设置request.session["isLogin"] = True
      • 在中间件中验证登录状态:if request.session.get("isLogin"): return None
      • 中间件中返回None代表继续执行,返回登录页面代表无登录状态
      • 浏览器关闭时清除session,确保用户每次进入系统先进行登录

    开启session

    设置settiings

    INSTALLED_APPS = [
      'django.contrib.sessions',
    ]
    MIDDLEWARE = [
          'django.contrib.sessions.middleware.SessionMiddleware',
    ]
    # 是否关闭浏览器使得Session过期(默认false)
    SESSION_EXPIRE_AT_BROWSER_CLOSE = True
    

    数据库使用默认的sqlite3

    DATABASES = {
        'default': {
             'ENGINE': 'django.db.backends.sqlite3',
             'NAME': os.path.join(BASE_DIR, 'db.sqlite3')
        }
    ]
    

    views中使用session

    • 设置session,登录验证完成,密码无误后执行
      request.session["isLogin"] = True

    验证登录中间件

    • app(backStage)目录下创建myMiddleware.py 名字自取
    from django.utils.deprecation import MiddlewareMixin
    from django.shortcuts import render
    
    class isLogin(MiddlewareMixin):
        def process_request(self, request):
            if request.session.get("isLogin"):
                return None
            # views中验证登录的def demo_toLogin()对应的url不使用中间件
            if "demo_toLogin" in request.path:
                return None
            return render(request, "demo/login.html")
    
    • settings中设置中间件
    MIDDLEWARE = [
         'backStage.myMiddleware.isLogin'
    ]
    

    相关文章

      网友评论

          本文标题:Django session验证登录

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