赞
踩
下面这一段也是在别的地方看过来的
这里有必要先了解一下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:
- # !/usr/bin/env python
- # -*- coding: utf-8 -*-
- from django.shortcuts import 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 SimpleMiddleware(MiddlewareMixin):
-
- def process_request(self, request):
- if request.path != '/login' and request.path != '/yypwyy/testApi/Login' and request.path != 'yypwyy/tqgl/tqShow':
- if request.session.get('user', None):
- pass
- else:
- print("被拦截...")
- return HttpResponseRedirect('/login')
2.将拦截器加入 settings.py 文件中
在settings.py 中加入这一段,开通session服务
- # session的储存方式(这里是选用的储存在本机)
- SESSION_ENGINE='django.contrib.sessions.backends.cache'
4.在登录成功的地方加入这一句话,在session的缓存中将用户名加进去
- # 登录成功,打开拦截器
- request.session["user"] =username
- #设置session 10 秒后过期
- request.session.set_expiry(10)
5.设置session之后就可以安心的调用地址了
我是看的这篇文章(感谢大佬):(21条消息) Django 的登录拦截器_django登录拦截器_爱唱歌de小青蛙的博客-CSDN博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。