flask框架中的cookie和session使用

文章介绍了flask框架中的cookie和session。Session是在服务器端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中。Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

WEB -> cookie & session

由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。

服务端如何识别特定的客户?这个时候Cookie就登场了。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。

Cookie其实还可以用在一些方便用户的场景下,设想你某次登陆过一个网站,下次登录的时候不想再次输入账号了,怎么办?这个信息可以写到Cookie里面,访问网站的时候,网站页面的脚本可以读取这个信息,就自动帮你把用户名给填了,能够方便一下用户。这也是Cookie名称的由来,给用户的一点甜头。

flask中的session和cookie

flask中的session机制是将敏感数据加密后放入session,然后将session存入cookie,下次请求时,直接从浏览器发过来的cookie中获取session,再从中获取数据进行解密

这样操作更节省服务开销,因为数据均存储到客户端

大家可能会担心这种做法的安全性,因为数据全部存储在本地浏览器,很容易被盗取,但是安全性总是相对的,而且flask里面对session也有自己的特殊加密算法,所以也不用太过于在意安全方面的问题

Session操作

1.使用sessiom需要先导入session

from flask import session

2.SECRET_KEY

一定记得要设置SECRET_KEY,用于加密数据,并且如果每次启动服务器你的秘钥都在变化的话就不能再用之前的SECRET_KEY进行解密了,我们此处就可以将它设置成固定值,对于配置文件里面变量的设置,前文讲过,如果数据量比较多就单独在config.py里面集成,但是如果只是很微量的几条设置,那么就可以在主文件里简单进行指令设置即可,类似这里的:

#生成随机的24位字符串
app.config['SECRET_KEY'] = os.urandom(24)

3.session值添加

因为session和cookie都是键值对形式的字典,所以直接用字典方法添加就可以了

session['username'] = 'user1'

4.session值删除

#1.单条删除
session.pop('username')
del session['username']
#2. 全部清除
session.clear()

5.session值获取

session.get('username')
session['username']

6.设置过期时间(如果不设置,默认浏览器退出即自动结束)

#在config.py中配置session参数PERMANENT_SESSION_LIFETIME,这个值的数据类型是datetime.timedelay类型
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)
session.permanent = True #默认为31天

在Flask中对cookie的处理

1. 设置cookie:

设置cookie,默认有效期是临时cookie,浏览器关闭就失效
可以通过 max_age 设置有效期, 单位是秒

resp = make_response("success") # 设置响应体
resp.set_cookie("Itcast_1", "python_1", max_age=3600)

2.获取cookie

获取cookie,通过reques.cookies的方式, 返回的是一个字典,可以获取字典里的相应的值

cookie_1 = request.cookies.get("Itcast_1")

3.删除cookie

这里的删除只是让cookie过期,并不是直接删除cookie

删除cookie,通过delete_cookie()的方式, 里面是cookie的名字

resp = make_response("del success") # 设置响应体
resp.delete_cookie("Itcast1")

示例

from flask import Flask, make_response, request
app = Flask(__name__)
@app.route("/set_cookie")
def set_cookie():
  resp = make_response("success")
  '''
    设置cookie,默认有效期是临时cookie,浏览器关闭就失效
    可以通过 max_age 设置有效期, 单位是秒
  '''''
  resp.set_cookie("Itcast_1", "python_1")
  resp.set_cookie("Itcast_2", "python_2")
  resp.set_cookie("Itcast_3", "python_3", max_age=3600)
  return resp

@app.route("/get_cookie")
def get_cookie():
  """
    获取cookie,通过reques.cookies的方式,
    返回的是一个字典,可以用get的方式
  """
  cookie_1 = request.cookies.get("Itcast_1") # 获取名字为Itcast_1对应cookie的值
  return cookie_1

@app.route("/delete_cookie")
def delete_cookie():
  """
    删除cookie,通过delete_cookie()的方式,
    里面是cookie的名字
    这里的删除只是让cookie过期,并不是直接删除cookie
  """
  resp = make_response("del success")
  resp.delete_cookie("Itcast1")
  return resp

if __name__ == '__main__':
  app.run(debug=True)

到此这篇关于flask框架中的cookie和session使用的文章就介绍到这了,更多相关flask cookie和session内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例

    本文实例讲述了Flask框架重定向,错误显示,Responses响应及Sessions会话操作.分享给大家供大家参考,具体如下: 重定向和错误显示 将用户重定向到另一个端点,使用redirect(), 要提前中止错误请求,请使用abort()函数 from flask import abort, redirect, url_for @app.route('/') def index(): return redirect(url_for('login')) @app.route('/login')

  • flask session组件的使用示例

    一.简介 flask中session组件可分为内置的session组件还有第三方flask-session组件,内置的session组件功能单一,而第三方的flask-sessoin可支持redis.memcached.文件等进行session的存储.以下将介绍内置session以及第三方session组件的使用方法以及处理机制. 二.内置session处理机制 Cookie与Session Cookie: Cookie意为"甜饼",是由W3C组织提出,最早由Netscape社区发展的

  • flask使用session保存登录状态及拦截未登录请求代码

    本文主要研究的是flask使用session保存登录状态及拦截未登录请求的相关内容,具体介绍如下. 前端请求form: <form action="/user/add" method="get"> <input type="text" name="username" value="111"> <input type="submit" value="

  • Flask之flask-session的具体使用

    flask-session是flask框架的session组件,由于原来flask内置session使用签名cookie保存,该组件则将支持session保存到多个地方,如: redis memcached filesystem mongodb sqlalchmey 安装 pip3 install flask-session 存储方式 redis #!/usr/bin/env python # -*- coding:utf-8 - import redis from flask import F

  • flask框架中的cookie和session使用

    文章介绍了flask框架中的cookie和session.Session是在服务器端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群.数据库.文件中.Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式. WEB -> cookie & session 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协

  • Flask框架中的session设置详解

    目录 Flask中的session session设置 关于session的设置 cookies中的session session序列化机制 session反序列化机制 session的使用和验证 Flask中的session session设置 Flask除请求对象之外,还有一个 session 对象. 它允许你在不同请求间存储特定用户的信息.它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名要使用会话,你需要设置一个密钥. 我们知道,在django中的session

  • Flask框架中request、请求钩子、上下文用法分析

    本文实例讲述了Flask框架中request.请求钩子.上下文用法.分享给大家供大家参考,具体如下: request 就是flask中代表当前请求的request对象: 常用的属性如下: 属性 说明 类型 data 记录请求的数据,并转换为字符串 * form 记录请求中的表单数据 MultiDict args 记录请求中的查询参数 MultiDict cookies 记录请求中的cookie信息 Dict headers 记录请求中的报文头 EnvironHeaders method 记录请求

  • Python的Flask框架中的Jinja2模板引擎学习教程

    Flask的模板功能是基于Jinja2模板引擎来实现的.模板文件存放在当前目前下的子目录templates(一定要使用这个名字)下. main.py 代码如下: from flask import Flask, render_template app = Flask(__name__) @app.route('/hello') @app.route('/hello/<name>') def hello(name=None): return render_template('hello.html

  • Django中的cookie与session操作实例代码

    添加cookie: def login(req): if req.method=="POST": uf = UserInfoForm(req.POST) if uf.is_valid(): username = uf.cleaned_data["username"] password = uf.cleaned_data["password"] print username,password users = UserInfo.objects.fil

  • Yii2.0中的COOKIE和SESSION用法

    1.Cookie Yii2的Cookie主要是通过yii/web/Request和yii/web/Response进行操作的 ,通过/Yii::$app->response->getCookies()->add()添加Cookie,通过/Yii::$app->request->cookies读取Cookie. 1)添加一个Cookie <?php //第一种方法 $cookie = new /yii/web/Cookie(); $cookie -> name =

  • Django中的cookie和session

    http协议是无状态的.下一次去访问一个页面时并不知道上一次对这个页面做了什么. 无状态的应用层面的原因是:浏览器和服务器之间的通信都遵守HTTP协议. 根本原因是:浏览器与服务器是使用Socket套接字进行通信的,服务器将请求结果返回给浏览器之后,会关闭当前的Socket连接,而且服务器也会在处理页面完毕之后销毁页面对象. 有时需要保存下来用户浏览的状态,比如用户是否登录过,浏览过哪些商品等. 实现状态保持主要有两种方式: 在客户端存储信息使用Cookie.在服务器端存储信息使用Session

  • Python的Flask框架中web表单的教程

     概要 在前面章节我们为主页定义了一个简单的模板,部分尚未实现的模块如用户或帖子等使用模拟的对象作为临时占位. 本章我们将看到如何利用web表单填补这些空白. web表单是web应用中最基本的构建要素,我们将通过表单来实现用户发帖和应用登录功能. 完成本章内容你需要基于前面章节完成的微博应用代码,请确认这些代码已安装并能正常运行. 配置 Flask-WTF是WTForms项目的Flask框架扩展,我们将用他来帮助我们处理web表单. 大部分Flask扩展都需要定义相关配置项,所以我们先来在应用根

  • Python的Flask框架中Flask-Admin库的简单入门指引

    Flask-Admin是一个功能齐全.简单易用的Flask扩展,让你可以为Flask应用程序增加管理界面.它受django-admin包的影响,但用这样一种方式实现,开发者拥有最终应用程序的外观.感觉和功能的全部控制权. 本文是关于Flask-Admin库的快速入门.本文假设读者预先具有一些Flask框架的知识. 介绍 初始化 增加视图 身份验证 生成URL 模型视图 文件管理 介绍 这个库打算做到尽可能的灵活.并且开发者不需要任何猴子补丁就可以获得期望的功能. 这个库使用一个简单而强大的概念-

  • 在Python的Flask框架中使用模版的入门教程

     概述 如果你已经阅读过上一个章节,那么你应该已经完成了充分的准备工作并且创建了一个很简单的具有如下文件结构的Web应用:   microblog     |-flask文件夹     |-<一些虚拟环境的文件>     |-app文件夹     |  |-static文件夹     |  |-templates文件夹     |  |-__init__.py文件     |  |-views.py文件     |-tmp文件夹     |-run.py文件 亲,想要运行这个程序么?那就运行这

随机推荐