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

做的好的有哪些网站wordpress分类信息导航

做的好的有哪些网站,wordpress分类信息导航,wordpress多张页面左右滑动,太原云建站模板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.dnsts.com.cn/news/272703.html

相关文章:

  • 用dw做网站的菜单栏网页站点的用途
  • 比较大网站建设公司炫酷的企业网站模板
  • 济南做外贸的网站公司重庆建站培训
  • discuz 企业网站广告制作单位
  • 网站不接入备案如何看免费的片
  • 公司网站可以用个人备案吗网站建设在国外
  • 网站网页优化技巧怎么看网站开发的发展
  • 上传网站根目录百度竞价一个月5000够吗
  • 免费注册网站有哪些运动 网站专题怎么做
  • 苏州网站优化推广做网站有什么
  • 网站建设简运维 简历wordpress 下拉框图标
  • 在线课堂网站开发怎么弄视频
  • 深圳做网站推荐哪家公司品牌创建策划方案
  • 品牌网站建设方案ppt建设网站简单的需要多少天
  • 58里面的网站怎么建设用jquery做网站好吗
  • 域名是什么有什么用淘宝关键词排名优化技巧
  • 企业门户网站建设方案怎么写网站规范建设
  • 国内信息图制作网站有哪些织梦手机网站怎么安装
  • 电气网站设计辽宁建设工程信息网进不去怎么办
  • 网站如何加速华为最新版
  • 手机网站模板psd建立局域网网站
  • 微网站价格微商引流被加方法精准客源
  • 网站做友链邢台市有几个区几个县
  • 大连手机自适应网站制作公司南宁中考招生信息网
  • 帮企网站建设代运营关于域名用于非网站用途
  • 公司网站制作需要什么步骤如何在个人网上建网站
  • 企业建立网站的必要性现代广告创意设计
  • 高新区免费网站建设互联网软件门户网站
  • 企业网站运行通知西安 房产网站建设
  • 彩票系统网站开发银行的网站怎么做