Save Session

Flask中session实现原理

时光毁灭记忆、已成空白 提交于 2020-12-17 23:21:52
前言 flask_session是flask框架实现session功能的一个插件,用来替代flask自带的session实现机制,flask默认的session信息保存在cookie中,不够安全和灵活。 flask的session机制 session是用来干什么的呢?由于http协议是一个无状态的协议,也就是说同一个用户第一次请求和第二次请求是完全没有关系的,但是现在的网站基本上有登录使用的功能,这就要求必须实现有状态,而session机制实现的就是这个功能。 实现的原理: 用户第一次请求后,将产生的状态信息保存在session中,这时可以把session当做一个容器,它保存了正在使用的所有用户的状态信息;这段状态信息分配了一个唯一的标识符用来标识用户的身份,将其保存在响应对象的cookie中;当第二次请求时,解析cookie中的标识符,拿到标识符后去session找到对应的用户的信息。 简单使用 from flask import Flask,session app = Flask(__name__) @app.route('/test1/') def test () : session.setdefault( 'name' , 'xiaoming' ) return 'OK' if __name__ == '__main__' : app.run(host= '127.0.0

利用Aria2构造自己的下载工具(一)

放肆的年华 提交于 2020-05-04 10:46:44
Aria2 是一款轻量级的跨平台的多线程下载工具,支持 Http/Https、Ftp、BitTorrent、Metalink 等主流协议,功能非常全面。和IDM或EagleGet这些下载工具相比,aria2是一款纯命令行工具,没有图形界面,但可以通过rpc的方式提供交互式下载,这个是它的一个缺点,同时也是它的一个优点。它没有图形界面,使得可以在远程服务器、路由器、nas等平台上运行它,通过rpc交互的方式,实现离线下载。 虽然上现在已经有webui-aria2, 以及 yaaw等一些第三方的比较成熟的界面工具。但了解一下其交互协议,实现一个更加灵活,更适合自己的功能强大的下载工具,对于程序员来说,还是一个比较指的折腾的的事情。 配置Aria2 在启动Aria2前,我们需要进行一些参数的配置,这些配置有两种方式,通过命令行或配置文件。当默认的配置较多的时候,通过命令行的方式显得冗繁和不直观,我们一般是通过配置文件的方式,这里是一个配置文件示例: # # '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 ## # # 被注释的选项填写的是默认值, 建议在需要修改时再取消注释 ## # # 文件保存相关 ## # 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置 dir= R:\Downloads # 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本,

微服务认证授权概览

你说的曾经没有我的故事 提交于 2020-01-06 18:32:52
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 从单体架构向微服务架构转型的过程中,认证方式也发生了改变。 而转变最大的方面便是有状态向无状态的转变。 在单体架构时代,我们一般使用的是会话管理(Session),架构图如下所示 即多实例采用一个同一个Session Store(一般采用Redis来存储)来进行Session的管理,即共享Session,在 第二代网关GateWay搭建流程 的 SaveSession 小节中有介绍共享Session的配置。对以上这种设置,我们称之为 有状态 。 而与之相对的就是 无状态 ,指的是服务器端不去记录用户的登录状态,不再去维护用户的Session。在微服务时代,如果依然采用共享Session的策略,则把各个独立的微服务又捆绑在了Session Store中,如果Session Store挂了,则所有的微服务都无法运行,等于把鸡蛋放到了一个篮子中。而更主要的是如果Session Store需要做迁移,则所有的微服务地址都要调整,牵一发而动全身。再就是如果Session Store达到了瓶颈(容量瓶颈,性能瓶颈),都得对其进行扩容。 微服务的无状态架构图如下所示 服务器端不会存储用户的登录状态,而是在用户登录的时候颁发一个token,之后用户的请求都需要带上token(可能放在head中,可能放在url参数中)

便宜有便宜的办法-小微企业云上的springboot集群方案2:session和redis

我与影子孤独终老i 提交于 2019-11-29 08:02:25
在谈到集群方案的时候,第一个会遇到的问题就是session问题,在单机上,session的问题从来都是web容器解决的,我们主要是用,但是集群意味着多容器。如果负载均衡是随机分配服务器访问的话,很容易造成在A服务器登录后,下次访问是走的是B服务器,结果B服务器的web容器里面并没有该用户的session,结果就悲剧了。那么怎么办呢,当然是redis来处理,redis把session集中存储起来,不管哪台服务器存取session都是走redis,本地服务器不保存session,这个问题就完美的解决了。这个方案落到具体的实现上,首先我想到的就是spring自己的解决方案,spring session。 1、spring session+redis跑起来 spring session+redis的方案非常的简单,大家请按步骤来: 步骤1:pom文件加starter <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter

便宜有便宜的办法-小微企业云上的springboot集群方案2:session和redis

余生颓废 提交于 2019-11-27 17:38:33
在谈到集群方案的时候,第一个会遇到的问题就是session问题,在单机上,session的问题从来都是web容器解决的,我们主要是用,但是集群意味着多容器。如果负载均衡是随机分配服务器访问的话,很容易造成在A服务器登录后,下次访问是走的是B服务器,结果B服务器的web容器里面并没有该用户的session,结果就悲剧了。那么怎么办呢,当然是redis来处理,redis把session集中存储起来,不管哪台服务器存取session都是走redis,本地服务器不保存session,这个问题就完美的解决了。这个方案落到具体的实现上,首先我想到的就是spring自己的解决方案,spring session。 1、spring session+redis跑起来 spring session+redis的方案非常的简单,大家请按步骤来: 步骤1:pom文件加starter <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter