当前位置: 首页 > news >正文

做的好的有哪些网站云畅网站建设后台

做的好的有哪些网站,云畅网站建设后台,h5制作官网,美图秀秀怎么制作素材图片Flask-Session使用Redis 一、介绍 在Flask中#xff0c;session数据默认是以加密的cookie形式存储在用户的浏览器中的。但是#xff0c;真正的session数据应该存储在服务器端。Django框架会将session数据存储在数据库的djangosession表中#xff0c;而Flask则可以通过第三…Flask-Session使用Redis 一、介绍 在Flask中session数据默认是以加密的cookie形式存储在用户的浏览器中的。但是真正的session数据应该存储在服务器端。Django框架会将session数据存储在数据库的djangosession表中而Flask则可以通过第三方库如flask-session来实现通常将session存储在Redis这样的内存数据库中。此外Flask也可以使用JWTJSON Web Tokens来处理session。 二、使用 1. 安装 要使用Flask的session功能首先需要安装flask-session库 pip install flask-session2.方式一 创建Redis连接并使用RedisSessionInterface来将session数据存储到Redis中。 通过session字典来存储和获取数据。 示例 from flask import Flask, session from flask_session.redis import RedisSessionInterface from redis import Redisapp Flask(__name__) # 创建一个 Flask 应用对象 app.debug True # 设置调试模式为开启 app.config[SESSION_COOKIE_NAME] hello_session # 设置会话 cookie 名称前端显示 conn_redis Redis(hostlocalhost, port6379) # 创建一个 Redis 连接对象连接本地 Redis 服务器# 设置应用的会话接口为基于 Redis 的会话 # app Flask 应用对象 # client Redis 客户端对象 # key_prefix 用于在数据库中存储会话的键名前缀 app.session_interface RedisSessionInterface(app, clientconn_redis, key_prefixbruce)app.route(/) def index(): # 定义路由处理函数session[serret] 123456 # 设置会话变量 serretreturn index # 返回字符串 indexif __name__ __main__:app.run()3.方式二 设置session的cookie名称和配置指定session类型为redis。 创建Redis连接对象并使用Session类来初始化Flask应用。 示例 from flask import Flask, session from flask_session import Session from redis import Redisapp Flask(__name__) app.session_cookie_name hello_session# 配置会话类型为redis并指定redis的主机和端口 app.config[SESSION_TYPE] redis app.config[SESSION_REDIS] Redis(host127.0.0.1, port6379)# 将会话配置应用到Flask应用程序中 Session(app)app.route(/) def index():session[secret] 123456return indexif __name__ __main__:app.run() 4.相关配置 # 设置会话的cookie名称 app.session_cookie_name hello_session# 配置会话类型为redis app.config[SESSION_TYPE] redis# Redis配置 app.config[SESSION_REDIS] Redis(host127.0.0.1, port6379) # Redis服务器的密码如果有 app.config[SESSION_REDIS_PASSWORD] password # Redis数据库索引 app.config[SESSION_REDIS_DB] 0 # 会话的过期时间默认是31天 app.config[PERMANENT_SESSION_LIFETIME] 3600 * 24 * 31# 是否对发送到浏览器端的cookie进行签名 app.config[SESSION_USE_SIGNER] True# 是否需要HTTPS传输cookie app.config[SESSION_COOKIE_SECURE] False# 设置cookie的httponly属性防止客户端脚本访问cookie app.config[SESSION_COOKIE_HTTPONLY] True# 设置cookie的SameSite属性防止CSRF攻击 app.config[SESSION_COOKIE_SAMESITE] Lax三、源码解析 使用Redis时使用的是RedisSessionInterface RedisSessionInterface继承ServerSideSessionInterface open_session def open_session(self, app, request):# 从cookie中获取会话IDsid request.cookies.get(app.config[SESSION_COOKIE_NAME])# 如果没有会话ID生成一个新的并返回if not sid:sid self._generate_sid(self.sid_length)return self.session_class(sidsid, permanentself.permanent)# 如果会话ID已经签名解除签名if self.use_signer:try:sid self._unsign(app, sid)except BadSignature:sid self._generate_sid(self.sid_length)return self.session_class(sidsid, permanentself.permanent)# 从数据库中检索会话数据store_id self._get_store_id(sid)saved_session_data self._retrieve_session_data(store_id)# 如果已保存会话存在从文档中加载会话数据if saved_session_data is not None:return self.session_class(saved_session_data, sidsid)# 如果已保存会话不存在创建一个新会话sid self._generate_sid(self.sid_length)return self.session_class(sidsid, permanentself.permanent)save_session def save_session(self, app, session, response):domain self.get_cookie_domain(app) # 获取cookie的域path self.get_cookie_path(app) # 获取cookie的路径name self.get_cookie_name(app) # 获取cookie的名称store_id self._get_store_id(session.sid) # 获取存储IDif session.accessed: # 如果会话已访问response.vary.add(Cookie) # 响应头中添加Vary信息if not session: # 如果会话不存在if session.modified: # 如果会话已修改self._delete_session(store_id) # 删除会话response.delete_cookie(keyname, domaindomain, pathpath) # 从响应中删除cookieresponse.vary.add(Cookie) # 响应头中添加Vary信息return # 返回if not self.should_set_storage(app, session): # 如果不应该设置存储return # 返回self._upsert_session(app.permanent_session_lifetime, session, store_id) # 更新或插入会话if not self.should_set_cookie(app, session): # 如果不应该设置cookiereturn # 返回# 获取额外的所需cookie设置value self._sign(app, session.sid) if self.use_signer else session.sid # 获取cookie的值expires self.get_expiration_time(app, session) # 获取cookie的过期时间httponly self.get_cookie_httponly(app) # 获取cookie的httponly设置secure self.get_cookie_secure(app) # 获取cookie的安全设置samesite (self.get_cookie_samesite(app) if self.has_same_site_capability else None) # 获取相同站点设置如果支持response.set_cookie(keyname,valuevalue,expiresexpires,httponlyhttponly,domaindomain,pathpath,securesecure,samesitesamesite,) # 在响应中设置cookieresponse.vary.add(Cookie) # 响应头中添加Vary信息
http://www.hkea.cn/news/14350308/

相关文章:

  • 博物建设公司网站如今做那个网站致富
  • 动漫网站logo企业网站怎么做排名
  • wordpress国内网站网络营销网站 功能
  • 做不做生意都要知道的网站新注册的公司怎么做网站
  • 深圳建站工作室wordpress中如何添加面包屑
  • 电影网站开发现状推广普通话宣传内容
  • 上海网站建设不好苏州微信网站建设
  • 帮做钓鱼网站会怎样wordpress博客百度收录
  • 自己编写网站wordpress 调用文章摘要
  • 山东专业网站建设公司哪家好鞍山玉佛苑玉佛图片
  • 唐山市做网站几种语言的网站如何做
  • 做网站 学什么重要新闻头条
  • 2016做网站百度号码认证平台个人号码申诉
  • 深圳网站建设ejaket更改wordpress链接数据库
  • 网站制作与网站设计郑州做优化的公司有哪些
  • 工艺品网站怎么做自己建网站买玩具
  • 唐山住房和城乡建设网站今天重大新闻摘抄
  • 网站流量转换做网页和网站一样吗
  • 网店的网站设计方案广州网站建设服务
  • 安卓做网站教程做网站推广的公司
  • 旅游手机网站开发网站开发模板教务管理
  • 网站式小程序幸福人寿保险公司官方网站
  • 弹出网站代码网站运营托管咨询
  • 网站栏目建设需求的通知青岛建网站需要花多少钱
  • 大佬做的魔法少女网站渭南网站建设服务
  • 中国十大流量网站厦门做网页网站的公司
  • 济南建设网站公司网上服装商城网站建设方案
  • 主流建站cms公司软件网站开发怎么入账
  • 沌口网站建设wordpress 微信采集插件
  • 郑州区块链数字钱包网站开发多少钱怎样备份网站