cookie与session关系

cookie      是保存在客户端浏览器的键值对,浏览器发送请求时候会自动携带。

session    1、生成随机字符串
2、回给浏览器,让它写到cookie # {"sessionID":"234asd243dv35fd"}
3、自己保留一份,作为一个key,存到一个地方,key后面对应一个保存用户相关信息的键值
                          session-key           session-data
                          234asd243dv35fd       {"user":"alex"

概念

cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie因此诞生

cookie工作原理

用户在浏览器登录后,服务端根据用户的登录信息生成键值对(也就是cookie),保存用户的个人信息,然后将键值对返回给浏览器,浏览器保存在本地。当浏览器再次访问时,就会自动将这个键值对(cookie)带上,这样服务端就能通过cookie的内容判断这个用户是谁了。

cookie虽然在一定程度上解决了保持状态的需求,但由于cookie本身最大支持4096字节的数据,以及cookie本身是明文保存在客户端,很容易被拦截或窃取。因此就需要一种能够支持保存更多数据,并且保存在服务端,且具有较高安全性的机制,这就是session

session工作原理

session是基于cookie工作的

  1. 用户登录后,服务端随机生成一个字符串,将这个随机字符串作为键值对(cookie)的value,而键值对的key则是由Django的session配置中自定义,默认情况下是sessionid,组成的cookie就{'sessionid':'xxxxxxxxxx'},服务端将这个cookie返回给浏览器,这样,浏览器本地只保存着一个随机字符串;
  2. 服务端再将第1步中生成的随机字符串做为key,由用户信息产生的字典做为value,组成一个键值对,保存在服务器端;假设随机字符串是"abc123",那组成的键值对理论上类似这样:{'abc123'{'login':true,'username':'jassin'}}
  3. 下次用户访问时,浏览器带着cookie,服务端根据cookie中的随机字符串就可以找到对应的用户信息了。

session的好处:浏览器端只存在一个随机字符串,避免用户信息被直接暴露在外。

from django.shortcuts import render
from app01 import models
def login(request):
# 记录日志
if request.method == 'GET':
pass
else:
user = request.POST.get('user')
pwd = request.POST.get('pwd')
obj = models.UserInfo.objects.filter(user=user,pwd=pwd).first()
if obj:
# 用户名和密码正确
"""
{
“xxxx的随机字符串”:{'id':1,'name':'jassin'},
“xx的随机字符串”:{'id':11},
} 表:
session_key value
xxxx的随机字符串 asfasdfasdfasdfwer2342fszdfsdfs 1. 生成随机字符串
2. 把随机字符串写到客户端浏览器cookie中
3. 在内存中大字典写入:
{
随机字符串: {'id':用户id}
}
"""
request.session['id'] = obj.id
request.session['name'] = obj.name else:
# 用户名和密码错误
pass
def home(request):
"""
:param request:
:return:
"""
"""
1. 获取客户端cookie中的随机字符串
2. 如果有:
则获取 key 对应的值
否则 返回None """
user_id = request.session.get('id') def temp(request):
data_list = {
'k1':'sf4sdf'
}
return render(request,'temp.html',data_list)

Django实现的cookie

获取Cookie

request.COOKIES['key']
request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
参数:
default: 默认值
salt: 加密盐
max_age: 后台控制过期时间

Django cookie与session的更多相关文章

  1. Python Web框架篇:Django cookie和session

    part 1 概念 在Django里面,cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话. 两者最大的区别是cookie的信息是存放在浏览器客户端的,而sessio ...

  2. python Django cookie和session

    在一个会话的多个请求中共享数据,这就是会话跟踪技术.例如在一个会话中的请求如下:  请求银行主页: 请求登录(请求参数是用户名和密码): 请求转账(请求参数与转账相关的数据): 请求信誉卡还款(请求参 ...

  3. falsk 与 django cookie和session存、取、删的区别

    falsk cookie的存取删需导入from flask import Flask,make_response,request# 存COOKIE的方法@app.route('/setcookie') ...

  4. django cookie与session组件

    本文目录 1 会话跟踪技术 2 cookie介绍 Django中操作Cookie Session Django中Session相关方法 Django中的Session配置 CBV中加装饰器 回到目录 ...

  5. Django - Cookie、Session、自定义分页和Django分页器

    2. 今日内容 https://www.cnblogs.com/liwenzhou/p/8343243.html 1. Cookie和Session 1. Cookie 服务端: 1. 生成字符串 2 ...

  6. django cookie and session

    cookie和session 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie的工作 ...

  7. django cookie、session

    Cookie.Session简介: Cookie.Session是一种会话跟踪技术,因为http请求都是无协议的,无法记录上一次请求的状态,所以需要cookie来完成会话跟踪,Seesion的底层是由 ...

  8. Django Cookie于Session

    一.Cookie与Session由来 因为Http协议的特性,每一次来自用户浏览器的请求都是无状态且独立的,通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用 ...

  9. Django—Cookie and Session

    一.Cookie Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密). 1. 应用 服务器可以利用Co ...

随机推荐

  1. 转:C#访问修饰符

    http://www.cnblogs.com/netlyf/archive/2009/12/13/1623103.html

  2. python网络编程——IO多路复用select/poll/epoll的使用

    转载博客: http://www.haiyun.me/archives/1056.html http://www.cnblogs.com/coser/archive/2012/01/06/231521 ...

  3. Hive2.2.1安装使用

    解压缩hive安装包tar zxvf apache-hive-2.1.1-bin.tar.gz 安装mysqlsudo yum install mysql-server 安装 mysql connec ...

  4. MMU解读

    转:https://blog.csdn.net/yueqian_scut/article/details/24816757 mmu页表也是放在内存中,mmu里有一个寄存器存放页表首地址,从而找到页表( ...

  5. MySQL-5.7 DELETE语句详解

    1.语法 (1)单表 DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [PARTITION (partition_name [, partit ...

  6. Zabbix linux agent 安装

    系统:Linux Centos 7.3 x64 服务:Zabbix_agent 3.0.16 一.安装Zabbix_agent 服务 1.安装zabbix 3.0 yum源 rpm -ivh http ...

  7. HTML5世界地图

    在线演示 本地下载

  8. jenkins添加GIT repository报错

    添加了ssh互信,但一直提示如下错误. Failed to connect to repository : Command "git ls-remote -h git@git.xxx.cn: ...

  9. infa dos命令

    informatica8.6用dos命令执行作业的命令: pmcmd startworkflow -sv integration -d Domain_BlueBreezeq -u Administra ...

  10. C++ Primer 第二章 学习笔记

    在auto一个引用时,auto会忽略顶层const,而保存底层const decltype(sum()) x = i; // I的类型就是sum()返回值的类型