美文网首页
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