zoukankan      html  css  js  c++  java
  • Django 中间件实践

    需求:原始的登录方法,session默认失效日期是1天,在失效后不会主动推出

    目标:当session过期后,再次发起请求就要跳转到登录页面

    实现:首先了解,Django的中间件是在项目的settings文件中,MIDDLEWARE 中定义中间件,可以看到,初始化就已经带了很多中间件,比如用户的,session的,csrf的

    我这里在项目目录下新建文件MindlewareMixinTest.py,在settings文件MIDDLEWARE中添加MindlewareMixinTest定义的方法,如'julive_data.MindlewareMixinTest.MD1'

    from django.utils.deprecation import MiddlewareMixin
    from django.shortcuts import redirect
    from django.contrib.sessions.models import Session
    import logging
    import datetime
    
    log = logging.getLogger("log")
    
    class MD1(MiddlewareMixin):
        def process_request(self, request):
            log.info("md1  process_request 方法。", id(request))  # 在视图之前执行
            log.info(request.session.session_key)
            session_key = request.session.session_key
            session = Session.objects.get(session_key=session_key)
            if session.expire_date < datetime.datetime.now():
                log.info("session 已经过期")
                return redirect('/')
            else:
                print("没有过期")
    

     继承MiddlewareMixin,中间件的作用是在请求前,请求后,做一些处理。

    这个其实很简单,通过request请求获取浏览器(用户)的唯一ID,用这个ID取session表查询过期时间,如果当前时间大于过期时间,说明过期,就重定向的登录页面,重新登录,否则就不做处理

    学习最大的乐趣在于分享,我是绝世老中医,欢迎来诊 个人qq:1978529954
  • 相关阅读:
    Python is 和 == 的区别, 编码和解码
    Python数据类型之字典
    Python中的基本数据类型之列表与元组初步了解
    Python中基本数据类型与对字符串处理的方法
    Python中的循环体
    Python的历史与基本知识入门
    web前端面试题库
    canvas绘图实现浏览器等待效果
    HTML5 Web Worker的使用
    思维题-方案数
  • 原文地址:https://www.cnblogs.com/jueshilaozhongyi/p/15147589.html
Copyright © 2011-2022 走看看