flask的cookie和session会话保持
Cookie
获取请求cookie
通过请求对象中的cookies属性可以获取cookie。
实例:
from flask import Flask, request
@app.route("/user-info", methods=["get", "post"])
def userinfo():
username = request.cookies.get("username")
return f"you name is :{username}"
设置响应cookie
通过Response对象的set_cookie()方法设置cookie,同时一般还会设置cookie的有效期、httponly、允许域等等属性。
def set_cookie(self,
key: str,
value: str = "",
max_age: timedelta | int | None = None,
expires: str | datetime | int | float | None = None,
path: str | None = "/",
domain: str | None = None,
secure: bool = False,
httponly: bool = False,
samesite: str | None = None) -> None
实例:
from flask import Flask, request, make_response
@app.route("/user-info", methods=["get", "post"])
def userinfo():
username = request.cookies.get("username")
# 构建请求对象并接收
response = make_response(f"you name is :{username}")
response.set_cookie("username", "newname", max_Age=3600)
return f"you name is :{username}"
删除cookie
本质上就是将cookie的有效期设置为0
response.set_cookie("<cookie名>", max_age=0)
Session
flask中使用Session需要配置app中的SECRET_KEY,因为Flask中的session默认并不是存储在服务器端的,而是通过加密算法加密后以cookie形式返回给客户端存储。
客户端携带过来后会进行解密,所以需要设置SECRET_KEY用于加密、解密。
设置secret_key
app.secret_key = "a*)(ihq#Eadbn8/*+XA2qAodhcoi$%^!5ss6z31ssdas"
获取session
通过导入from flask import session来使用
@app.route('/get_session')
def get_session():
username = session.get('username')
return f"you name is {username}"
设置session
from flask import session
@app.route('/set_session')
def set_session():
# 直接用字典的方式设置即可
session['username'] = 'flask'
return 'set session ok'
session的有效期设置
默认情况下session随着会话消失而消失,如果需要长时间保存,则需要设置:
# 1、app配置permanent_session_lifetime
app.permanent_session_lifetime = datatime.timedelta(days=7)
# 2、在路由中开启session持久保持属性
@app.route('/set_session')
def set_session():
# 直接用字典的方式设置session即可,这点与django相同
session['username'] = 'flask'
# 开启持久保存session,保存的时长为permanent_session_lifetime 所设置的值
session.permanent = True
return 'set session ok'
删除session
删除单个
from flask import session
@app.route('/clear_signle_session')
def set_session():
# 由于session就是一个字典,,所以直接可以调用字典的pop方法弹出
session.pop("username")
return "clean username ok"
删除所有
from flask import session
@app.route('/clear_all_session')
def set_session():
# 由于session就是一个字典,,所以直接可以调用字典的clear方法删除所有。
session.clear()
return "clean all session ok"
flask的cookie和session会话保持的更多相关文章
- flask中cookie和session介绍
flask中cookie和session介绍 一.cookie: 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.co ...
- Cookie与Session会话技术
Cookie与Session会话技术 一.什么是会话 会话:当用户打开浏览器,访问多个WEB资源,然后关闭浏览器的过程,称之为一个会话,选项卡,弹出页面都属于这个会话,且共享同一个session. 二 ...
- flask中cookie和session设置
flask中cookie和session介绍 一.cookie: 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户. ...
- Flask:cookie 和 session (0.1)
Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2 Cookie是什么?有什么用? 某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常 ...
- Flask中cookie和session设置与csrf原理攻防
Flask之操作cookie app.py from flask import Flask, request, Response app = Flask(__name__) @app.route('/ ...
- Java开发系列-Cookie与Session会话技术
概述 会话技术:当用户打开浏览器的时候,访问不同的资源,直到用户将浏览器关闭,可以认为这是一次会话.会话技术产生是由于Http请求是一个无状态的协议,它不会记录上次访问的内容,用户在访过程中难免产生一 ...
- cookie和session会话技术
因为http协议是无状态的,也就是说每个客户端访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识别客户端状态.会话技术是帮助服务器记住客户端状态的. 一次会话的开始是通过浏览器访问某个 ...
- python三大框架之一flask中cookie和session的相关操作
状态保持 Cookie cookie 是指某些网站为了 辨别 用户身份,进行会话跟踪而储存在用户本地的数据(通常会经过加密),复数形式是 coolies. cookie是由服务器端生成,发送给客户端 ...
- flask框架--cookie,session
今天我又给大家分享一下怎么用flask框架来实现像淘宝购物车一样存储数据,并且把存储的数据删除,这个方法可以用两个方法都可以做成,一个是cookie,另一个是session. session是依赖于c ...
- Flask (二) cookie 与 session 模型
会话技术 Cookie 客户端端的会话技术 cookie本身由浏览器保存,通过Response将cookie写到浏览器上,下一次访问,浏览器会根据不同的规则携带cookie过来 特点: - 客 ...
随机推荐
- pythonapi接口怎么对接?
Python API接口对接是使用Python语言开发应用程序时,与外部API接口进行交互的一种方式.API(应用程序接口)是一种定义了程序或系统如何与另一个程序或系统进行交互的协议.通过使用Py ...
- 为什么创建 Redis 集群时会自动错开主从节点?
哈喽大家好,我是咸鱼 在<一台服务器上部署 Redis 伪集群>这篇文章中,咸鱼在创建 Redis 集群时并没有明确指定哪个 Redis 实例将担任 master,哪个将担任 slave ...
- DesignPattern-part1
title: "modern C++ DesignPattern-Part1" date: 2018-04-03T16:06:33+08:00 lastmod: 2018-04-0 ...
- brpc internal
brpc 内部实现 thread model pthread 1:1atomic cache同步降低性能 fiber n:1 -> nginx 多核难以扩展, 用户不能做阻塞操作. contex ...
- Sermant类隔离架构:解决JavaAgent场景类冲突的实践
本文分享自华为云社区<Sermant类隔离架构解析--解决JavaAgent场景类冲突的实践>,作者:华为云开源. Sermant是基于Java字节码增强技术的无代理服务网格,其利用Jav ...
- Go运算操作符全解与实战:编写更高效的代码!
本文全面探讨了Go语言中的各类运算操作符,从基础的数学和位运算到逻辑和特殊运算符.文章旨在深入解析每一种运算操作符的工作原理.应用场景和注意事项,以帮助开发者编写更高效.健壮和可读的Go代码. 简介 ...
- Towards Network Anomaly Detection Using Graph Embedding笔记
Towards Network Anomaly Detection Using Graph Embedding 目录 Towards Network Anomaly Detection Using G ...
- 使用Blazor WASM实现可取消的多文件带校验并发分片上传
前言 上传大文件时,原始HTTP文件上传功能可能会影响使用体验,此时使用分片上传功能可以有效避免原始上传的弊端.由于分片上传不是HTTP标准的一部分,所以只能自行开发相互配合的服务端和客户端.文件分片 ...
- solidity入门
1. solidity 简介 Solidity(中文名称:Solidity 语言)是一种面向智能合约(Smart Contracts)的高级编程语言,最初由以太坊(Ethereum)的团队开发并用于以 ...
- 小景的工具使用--Java诊断工具Arthas的使用说明
小景最近在做程序和数据库的压测工作,期间监控压测数据,分析程序原因变成了一个待解决的问题,根据公司小伙伴的建议,接触了阿尔萨斯这个诊断工具,下面小景分别基于Linux操作系统和Windows操作系统, ...