当前位置:   article > 正文

django 拦截器

django 拦截器

这个拦截器用到了session的知识

下面这一段也是在别的地方看过来的

这里有必要先了解一下Session和Cookie的概念。

我们知道,HTTP是无状态、无连接的协议,但是只要结合实际场景的话,你显然会对这个说法感到疑惑,因为有很多实际应用中的例子,似乎都表明了HTTP是’有状态’的。比方说,你登录一个网站,并没有输入账号密码就会自动登录,你在购物车中购买的商品,并没有标注你的身份就可以被服务器正确识别,这又是怎么一回事呢?其实做到这些的,不是HTTP,而是另外两个技术,Cookie和Session。

我们登录一个网站输入网址,就相当于为浏览器与服务器开启了一次临时会话,在这次会话中,不可避免的要产生很多数据,但HTTP是无状态的,为了记住这些数据,从而出现了Cookie和Session。其中,Cookie是客户端技术,而Session是服务端技术。因为Cookie保存在客户端,因此Cookie中的信息并不是很安全,我们通常将一些不是很重要的信息保存在Cookie中,而将一些用户的关键性信息保存在Session中。

当浏览器向服务器发送一个请求时,浏览器会自动生成一个Session和一个Session ID,Session ID用来唯一标注这个Session,然后将该ID发送给浏览器,之后浏览器如果发生第二次请求,会将该Session ID一同发送给服务器,服务器会根据ID找到相应的Session,这样就基本保证了有状态。

(21条消息) 怎样在Django中使用Session?(详解)_django session_二十七º的博客-CSDN博客

拦截器

1.新建 mymiddleware.py 文件

mymiddleware.py:

  1. # !/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from django.shortcuts import HttpResponseRedirect
  4. try:
  5.    from django.utils.deprecation import MiddlewareMixin  # Django 1.10.x
  6. except ImportError:
  7.    MiddlewareMixin = object  # Django 1.4.x - Django 1.9.x
  8. class SimpleMiddleware(MiddlewareMixin):
  9.    def process_request(self, request):
  10.        if request.path != '/login' and request.path != '/yypwyy/testApi/Login' and request.path != 'yypwyy/tqgl/tqShow':
  11.            if request.session.get('user', None):
  12.                pass
  13.            else:
  14.                print("被拦截...")
  15.                return HttpResponseRedirect('/login')

2.将拦截器加入 settings.py 文件中

在settings.py 中加入这一段,开通session服务

  1. # session的储存方式(这里是选用的储存在本机)
  2. SESSION_ENGINE='django.contrib.sessions.backends.cache'

4.在登录成功的地方加入这一句话,在session的缓存中将用户名加进去

  1. # 登录成功,打开拦截器
  2. request.session["user"] =username
  3. #设置session 10 秒后过期
  4. request.session.set_expiry(10)

5.设置session之后就可以安心的调用地址了

我是看的这篇文章(感谢大佬):(21条消息) Django 的登录拦截器_django登录拦截器_爱唱歌de小青蛙的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/71724
推荐阅读
相关标签
  

闽ICP备14008679号