一,基本概念。

1,session的概念。

session和cookie的作用有点类似,都是为了存储用户相关的信息。不
同的是,cookie是存储在本地浏览器,而session是存储在服务器。存
储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有
一定的弊端,就是会占用服务器的资源,但现在服务器发展至今,一些
session信息还是绰绰有余的。

使用session的好处:
1,敏感数据不是直接发送回浏览器,而是发送回一个“session_id”,服
务器将“session_id”和敏感数据做一个映射存储在“session”(在服务器)
中,更加安全。
2,“session”可以设置过期时间,也从另外一方面保证了用户的账号安全。

2,cookie的概念。

在网站中,http请求是无状态的。也就是说即使第一次和服务器连接
后并且登陆成功后,第二次请求服务器依然不能知道当前请求是哪个
用户。cookie的出现就是为了解决这个问题,第一次登陆后服务器返
回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户
发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自
动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户
是哪个了。cookie存储的数据量有限,不停的浏览器有不同的存储大
小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。


3,session及cookie结合使用。

cookie和session结合使用:
web发展至今,cookie和session的使用已经出现了一些非常成熟的方案。
在如今的市场或者企业里,一般有两种存储方式。
1,存储在服务器:通过cookie存储一个session_id,然后具体的数据则
是保存在session中。如果用户已经登录,则服务器会在cookie中保存一
个session_id,下次再次请求的时候,会把该session_id携带上来,服务
器根据session_id和session库中获取用户的session数据。就能知道用户
到底是谁,以及之前保存的一些状态信息。这种专业术语叫做sever side
session。
2,将session数据加密,然后存储在cookie中。这种专业术语叫做client
side session。flask采用的就是这种方式,但是也可以替换成其他形式。

4,flask中session及cookie的不同。

flask中session工作机制(和上述概念有点区别):
1,把敏感数据经过加密后放入“session”中,然后再把“session”存放在“
cookie” 中,下次请求的时候,再从浏览器发送过来的“cookie”中读取
“session”,然后再从“session”中读取敏感数据,并进行解密,获取最终的
用户数据。
2,“session”可以设置过期时间,也从另外一方面保证了账号安全。
3,安全是相对的,把“session”放在“cookie”中,经过加密,也是比较安全的。

二,具体操作

1,session写入。session的设置和字典一样,注意:记住设置SECRET_KEY,它的作用相当于“盐”

from flask import Flask,session
import config app = Flask(__name__)
app.config.from_object(config) @app.route('/')
def hello_world():
session['username'] = "zhiliao"
return 'Hello World!' if __name__ == '__main__':
app.run() import os
SECRET_KEY =os.urandom()

经过运行后,结果为:内容经过SECRET_KEY撒盐后变为一长串东西。

2,session读取。

# 读取session
@app.route('/get/')
def get():
# 两种方法
# ,session['username']
# ,session.get('username')
return session.get('username')

3,session删除

@app.route('/')
def hello_world():
session['username'] = "zhiliao"
return 'Hello World!' # 读取session
@app.route('/get/')
def get():
# 两种方法
# ,session['username']
# ,session.get('username')
return session.get('username') @app.route('/delete/')
def de():
print(session.get('username'))
session.pop('username')
return "sss"

注意:先执行http://127.0.0.1:5000/才会先生成session,后面才能删除(执行http://127.0.0.1:5000/delete/

不然没有session怎么删。

4,清除session中的所有键值对。

@app.route('/clear/')
def clear():
print(session.get('username'))
session.clear() #嗲括号
print(session.get('username'))
return "aaa"

三,设置过期时间。

@app.route('/')
def hello_world():
session['username'] = "zhiliao"
session.permanent = True
return 'Hello World!'

不设置的话关掉网页就没了,设置永久的话最长为一个月时间。

常规的天数设置:

from flask import Flask,session
import config
from datetime import timedelta app = Flask(__name__)
app.config.from_object(config)
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=) #2 @app.route('/')
def hello_world():
session['username'] = "zhiliao"
session.permanent = True #这句话不加的话就不会执行#2代码
return 'Hello World!'

07flask中session及cookie的用法。的更多相关文章

  1. yii2.0框架中session与cookie的用法

    我们在开发项目中南面使用到session给和cookie,那么在yii中有他自己的规则 如下案例: session使用     function actionS1(){         echo $t ...

  2. PHP中Session和Cookie的探究

    一.Session (1)Session的由来以及介绍 Session:在计算机中,尤其是在网络应用中,称为“会话控制”,生存时间为用户在浏览某个网站时,从进入网站到关闭这个网站所经过的这段时间,也就 ...

  3. PHP中session和cookie的区别

    这个话题无论是系统运维还是PHP开发人员面试时会经常遇到,所以这里也进行一些总结和归纳,session和cookie的具体理论网上比较大,大家googel下均可;系统运维注意区分下session(会话 ...

  4. Session和Cookie的用法及区别

    1. Session.Cookie是什么 1.1 概念理解 要了解session和cookie是什么,先要了解以下几个概念. 1.1.1 无状态的HTTP协议 协议:是指计算机通信网络中两台计算机之间 ...

  5. webform中Session和Cookie对象的用法

    Session: Session:在计算机中,尤其是在网络应用中,称为"会话控制".Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web页之间 ...

  6. Django中的session于cookie的用法

    1.cookies 1.django 中使用 cookies 1.设置cookies的值(将数据保存到客户端) 语法: 响应对象.set_cookie(key,value,expires) key:c ...

  7. php中session和cookie

    cookie 每次请求页面的时候进行验证,如果用户信息存储在数据库中,每次都要执行一次数据库查询,给数据库造成多余的负担.cookie可以被修改的,所以安全系数太低. session是存储在服务器端面 ...

  8. 简单操作django中session和cookie

    cookie 1.会话技术 2.客户端的会话技术( 数据库保存在浏览器上) 3.问题导致原因: 在web应用中,一次网络请求是从request开始,到response结束,跟以后的请求或者跟其他请求没 ...

  9. php中session和cookie的使用及区别

    1.cookie的使用 什么是 Cookie? cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 P ...

随机推荐

  1. How to delete VSTS Project

    Buiding is so easy , Where is deleting ? C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7 ...

  2. CentOS命令登录MySQL时,报错ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)错误解决方法

    1.停用mysql服务:# /etc/rc.d/init.d/mysqld stop 2.输入命令:# mysqld_safe --user=mysql --skip-grant-tables --s ...

  3. java字符串转为Map类型:split()方法的应用

    方法一: package com.thinkgem.jeesite.modules.socketTest.demo2; import java.util.HashMap; import java.ut ...

  4. 读spring源码(一)-ClassPathXmlApplicationContext-初始化

    工作来几乎所有的项目都用到了spring,却一直没有系统的读下源码,从头开始系统的读下吧,分章也不那么明确,读到哪里记到哪里,仅仅作为个笔记吧. 先看ClassPathXmlApplicationCo ...

  5. GX/GZOI2019 day2 解题报告

    GX/GZOI2019 day2 解题报告 题目链接 逼死强迫症 旅行者 旧词 t1 逼死强迫症 显然地,记 \(f(i)\) 为长度为 \(i\) 的木板的答案,可得: \(\\\) \[f(i)= ...

  6. java 日常学习记录-反射

    Hero类 package helloworld; public class Hero { public String name; //姓名 public float hp; //血量 public ...

  7. 如何在sublime安装ctags函数追踪插件

    一.这个插件是需要下载执行软件才能够操作的,下载地址http://prdownloads.sourceforge.net/ctags/ctags58.zip 然后解压到自己喜欢的目录下,我是安装到 D ...

  8. IDEA内的SpringBoot插件安装与SpringBoot项目生成地址

    最新安装idea,在新建项目时没有spring initializr选项,也没有spring assistant选项.因此需要安装相应插件 在菜单栏 file>>settings>& ...

  9. idea中classpath的问题

    新创建的项目,在web.xml中配置 Spring MVC 的 DispatcherServlet,,指定springmvc.xml,结果这部分出错,请求的时候报错 结果查找,发现在Idea中,cla ...

  10. 2019年Python、Golang、Java、C++如何选择?

    前言 作为开发者我们都知道,开发后台语言可选择的方向会很多,比如,Java,go,Python,C/C++,PHP,NodeJs….等很多,这么多语言都有什么样的优势?如果让你学习一门后端语言,又该如 ...