首页 > 其他分享 >flask的cookie和session会话保持

flask的cookie和session会话保持

时间:2023-10-04 12:24:42浏览次数:28  
标签:username set flask app session cookie

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"

标签:username,set,flask,app,session,cookie
From: https://www.cnblogs.com/juelian/p/17742119.html

相关文章

  • flask请求钩子(就是django的中间件)
    flask中的请求钩子就是域django的中间件类似,作用都是用于在请求前、后、响应前、后进行一些hook操作。请求钩子装饰器@app.before_request#请求前会调用,一般可以用来做权限校验。@app.brefore_first_request#只在第一次请求的时候调用,可以做一些init初始化的动作。......
  • flask统一异常捕获(作用:统一捕获指定的异常并返回)
    flask中可以使用装饰器errorhandler来对指定的异常、状态码等统一捕获并处理。对指定的状态码进行统一捕获@app.errorhandler(404)#参数e是异常的详细信息的对象,必须要有一个参数接收异常对象。defpagenotfound(e):#比如可以重定向到统一的404静态页面中。#不过......
  • flask自带的异常抛出函数abort
    flask中有一个abort函数,可以用于快捷的抛出异常,但是只能抛出标准的HTTP状态码,不能乱设置HTPP状态码,比如666、777这种。[email protected]("/user")defuser():abort(404)......
  • flask应用程序配置
    flask中配置app的配置有几种方式,不同的场景适合用不同的方式。配置定义方式如下:(注意:这几种方式都时可以混用的)直接调用app.config来设置。app.config["SECRET_KEY"]="sjhiq1y198798su656s#$#$%"从类对象中加载配置文件(优先级高于app.config直接设置)app.config.from_ob......
  • flask蓝图(这玩意就是django的子应用)
    蓝图的概念类似django的子应用,作用就是分模块开发,有关联的都放在一起。蓝图的创建步骤:新建一个包(一个包就是一个模块、等同于一个子应用)在包的__init__.py中创建蓝图对象。蓝图对象所有的参数和功能与Flask()对象类似。见:user下的__init__.py和views.py在app中注册蓝......
  • flask上下文、g变量、current_app
    在flask中的上下文分为两种:请求上下文(requestcontext)也就是和请求相关的上下文,记录一些请求相关的数据。包含:1、request请求对象2、session会话应用上下文(appcontext)记录一些和flask的应用(app=Flask(name))的上下文数据,主要包含:**1、current_app**在项目其它......
  • cookie
    题目有附件和在线环境,先看看附件, 不太懂是什么意思,感觉应该就是大致的做题顺序 打开在线环境 随便看看没有什么收获,抓包看看 结合前面给的那个文档了解json格式JSON简介与解析方法(超级详细)-CSDN博客所以这里的意思应该是根据上面的文档提示操作进行那就先修改数据包......
  • Golang gin Cookie的使用
    Cookie介绍HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否由同一个客户端发出Cookie就是解决HTTP协议无状态的方案之一,中文是小甜饼的意思Cookie实际上就是服务器保存在浏览器上的一段信息。浏览器有了Cookie之后,每次向服务器发送请求时都会同......
  • Cookie和Session
    1.前言Cookie和Session是Web开发中常用的概念,用于在客户端和服务器之间存储和跟踪用户信息。2.Cookie2.1什么是CookieCookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如MicrosoftEdge、Firefox、GoogleChro......
  • 获取个人中心的信息时需要带上cookie
    importurllib.requestimporturllib.parseheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/96.0.4664.110Safari/537.36Edg/96.0.1054.62','cookie':&#......