返回顶部
首页 > 资讯 > 后端开发 > Python >Flask入门系列Cookie与session的介绍
  • 766
分享到

Flask入门系列Cookie与session的介绍

2024-04-02 19:04:59 766人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一、Cookie的使用1、什么是Cookie2、在flask中使用Cookie二、session的使用1、什么是session2、Flask中的session对象3、在Flask

一、Cookie的使用

1、什么是Cookie

我们都知道,Http 协议是无状态的,也就是说,在一次请求响应结束后,服务端不会保留任何对方状态的信息,对于某些需要保留的信息,可以通过 Cookie 技术来完成,通过在请求和响应报文中添加 Cookie 数据来保存客户端的状态信息。

WEB 服务器为了存储某些数据(比如用户信息) 而保存在浏览器上的小型文本数据,浏览器会在一定时间内保存它,在下次向该服务器发送请求时附带这些数据,Cookie 通常被用来进行用户会话管理(比如用户的登录状态),保存用户的一些信息。

2、在Flask中使用Cookie

Flask 中,如果想要在响应中添加一个 cookie,可以使用 response 对象的set_cookie()方法。

set_ cookie()方法的参数如下:

  • keycookie 键名
  • valuecookie
  • max_agecookie 被保存的时间,单位:秒
  • expires:具体的过期时间
  • path:限制 cookie 可用的路径,默认为整个域名
  • domaincookie 可用的域名
  • secure:设置为 True,只有通过 https 才可使用
  • httponly:设置为True,禁止客户端 js 获取 cookie

具体使用如下:


@app.route('user/<name>')

def user(name):

    response = make_response('hello {}'.fORMat(name), 200)

    response.set_cookie("name", name)

    return response

Flask 中,Cookie 可以通过 request 请求对象 cookies 属性获取。


@app.route('/hello')

def hello():

    user = request.args.get('name')

    if not user:

        user = request.cookies.get("name", 'default')

    return 'Hello {}!'.format(user)

二、session的使用

1、什么是session

session 指用户会话,会话可以用来保存当前请求的一些状态,以便于在请求之前共享信息。session是存储在服务端的,通过唯一标识区分用户 session,即 session id,一般情况下,session id 是存在 Cookie 中的,服务端可以获取 Cookie 中的 session id 来获取用户 session

2、Flask中的session对象

我们了解了 Cookie 最重要的功能是用来保存客户端用户的状态信息。但是存在这样一个问题,Cookie 是保存在客户端的,在浏览器中可以轻易的添加和修改 Cookie,而且如果把用户的状态信息以明文的方式存储在 Cookie 里的话,那么就可以通过伪造 Cookie 信息来伪造别人的用户信息,从而获取一些权限。为了避免这个问题,我们要对敏感的 Cookie 内容进行加密。Flask 提供了 session 对象就是用来将 Cookie 数据加密存储的。

3、在Flask中使用session

session 需要通过密钥对数据进行签名以加密数据,因此,需要先设置一个密钥app.secret_key,这里设置的密钥只是一个简单示例,在生产环境中,必须要随机生成的密钥,保证秘钥的复杂度度和随机性,才更安全


# 设置密钥

app.secret_key = 'qwertyuiop'

@app.route('/user', methods=['POST', 'GET'])

def user():

    if request.method == 'POST':

        user = request.form['user_name']

        session['user_name'] = request.form['user_name']

        return 'Hello {}!'.format(user)

    else:

        if 'user_name' in session:

            return 'Hello {}!'.format(session["user_name"])

session 对象的使用就跟字典一样,如上,用户使用POST请求登录后,在 session 中保存用户名,下次再使用GET请求时,不传递任何信息,也可以在 session 中获取该用户的信息。

想要清除 session 指定信息的话,例如用户名,可以使用 session.pop("user_name", None),清除全部的话可以使用session.clear()

到此这篇关于 Flask 入门系列 Cookie与session的介绍的文章就介绍到这了,更多相关 Flask  Cookie与session内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Flask入门系列Cookie与session的介绍

本文链接: https://lsjlt.com/news/158437.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Flask入门系列Cookie与session的介绍
    目录一、Cookie的使用1、什么是Cookie2、在Flask中使用Cookie二、session的使用1、什么是session2、Flask中的session对象3、在Flask...
    99+
    2024-04-02
  • Flask中Cookie和Session理解与作用介绍
    目录前序1、cookie介绍2、session介绍一、cookie学习1、设置cookie2、客户端(浏览器)二、session学习1、设置SECRET_KEY2、设置session...
    99+
    2024-04-02
  • 如何理解Flask中的Cookie与session
    如何理解Flask中的Cookie与session,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、Cookie的使用1、什么是Cookie我们都知道,HTTP...
    99+
    2023-06-21
  • Session和Cookie的区别与联系是什么
    Session和Cookie是两种不同的机制,用于在Web应用中保存用户状态信息。区别:1. 存储位置:Cookie存储在客户端(浏...
    99+
    2023-08-15
    Session Cookie
  • openEuler快速入门-openEuler操作系统介绍
    openEuler快速入门 第一章 openEuler操作系统介绍 文章目录 openEuler快速入门前言一、openEuler操作系统介绍二、openEuler操作系统使用三、openE...
    99+
    2023-09-05
    服务器 linux 运维
  • Node.js包管理器Yarn的入门介绍与安装
    前言 这两天大家有没有都被Yarn悄悄刷了屏,最近Facebook 发布了新的 node.js 包管理器 Yarn 用以替代 npm 。为了跟上 Javascript 这股潮 流的脚步,大概的浅尝了一下这个...
    99+
    2022-06-04
    管理器 入门 Node
  • 怎样分析cookie与SESSION的区别和联系
    怎样分析cookie与SESSION的区别和联系,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在一些投票之类的场合,我们往往因为公平的原则要求每人只能投一票,在一些WEB开发中...
    99+
    2023-06-03
  • 消息中间件ActiveMQ的简单入门介绍与使用
    目录一、什么是消息中间件二、什么是ActiveMQ三、什么时候需要用ActiveMQ四、如何使用ActiveMQ浅谈MQTT1、什么是MQTT2、如何理解MQTT3、如何使用MQTT...
    99+
    2024-04-02
  • Java8深入学习系列(一)lambda表达式介绍
    前言最近在学习java8,所以接下来会给大家介绍一系列的Java8学习内容,那么让我们先从lambda表达式开始。众所周知从java8出现以来lambda是最重要的特性之一,它可以让我们用简洁流畅的代码完成一个功能。 很长一段时间java被...
    99+
    2023-05-31
    java8 lambda表达式 ava
  • C++中关于this指针的入门介绍
    目录简介特性举例注意简介 C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参 数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有...
    99+
    2024-04-02
  • WordPress入门指南:简单易懂的介绍
    随着互联网的不断发展,搭建个人博客或企业网站已经变得越来越简便易行。而在众多网站搭建工具中,WordPress作为一个内容管理系统,备受青睐。本文将为大家提供一个WordPress入门...
    99+
    2024-02-29
    指南 入门
  • python入门课程第一讲之安装与优缺点介绍
    目录说在前面何为Python如何安装Python呢Max OS下安装Python3普通的安装方式通过Homebrew来安装Python有哪些优缺点呢?优点缺点Python能干什么总结...
    99+
    2024-04-02
  • Pythonweb框架中的setcookie究竟做了什么?session与cookie关系
    用python web框架的同学都知道 ,在使用例如 django,flask,tornado等这些web框架的时候,都有已经为大家封装好了的 setcookie的方法。那么这个方法究竟做了什么。可能有些新人朋友并不能很好的理解。那么今天d...
    99+
    2023-06-02
  • 【MySQL新手入门系列五】:MySQL的高级特性简介及MySQL的安全简介
    前面我们已经大致讲了一下mysql的安装等介绍,MySQL 中的“新增、删除与修改”操作。 MySQL 作为一款业界领先的数据库管理系统,具备许多高级特性,本文将重点介绍MySQL中的索引、视图、存储过程、触发器和事务处理。 【MySQL新...
    99+
    2023-08-17
    mysql 安全 数据库
  • JavaScript系列从入门到精通系列第九篇:JavaScript中赋值运算符和关系运算符以及Unicode编码介绍
    文章目录 一:赋值运算符 1:= 2:+= 3:-= 4:*= 5:/= 6:%= 二:关系运算符  1:数值类型关系运算 (一):> (二):>= (三): 10;//false (二):>= var result = 5 >= 10;/...
    99+
    2023-09-27
    javascript 开发语言 ecmascript 前端 js
  • Vue混入与插件的使用介绍
    目录1. 混入2. 插件1. 混入 概述: 混入(mixins)是一种分发Vue组件中可复用功能的非常灵活的方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选...
    99+
    2024-04-02
  • Android入门:广播发送者与广播接收者详细介绍
    一、广播发送者&广播接收者介绍 1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: publ...
    99+
    2022-06-06
    Android
  • 【JAVA零基础入门系列】Day13 Java类的继承与多态
    继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽)  开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟方法,被继承的类被称为父类或者基类,继...
    99+
    2023-06-03
  • Java中集合List、Set和Map的入门详细介绍
    目录一、Collection接口二、List集合2.1介绍2.1.1 ArrayList(数组)2.1.2 Vector(数组实现、线程同步)2.1.3 LinkList(链表)2....
    99+
    2024-04-02
  • Python函数的介绍以及装饰器入门用法
    这篇文章主要介绍“Python函数的介绍以及装饰器入门用法”,在日常操作中,相信很多人在Python函数的介绍以及装饰器入门用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python函数的介绍以及装饰器入...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作