传统的php Application升级改造,将Session升级到到JWT+Redis,同时能够兼容Session
需求:
1、新的前端采用Vue3,通过Restful API接口与后端进行交互。
2、原有的应用,继续采取前后端一体的方式进行交互。
3、现在需要对原有的SaaS ERP进行渐进式改造,一方面,需要满足新的Vue前端的API要求,另一方面,现阶段,需要支持session方式的传统应用。
方案:
1、php server端,技术栈改造,通过composer,增加slim+jwt+redis软件包
2、调整原应用的目录结构,如下:
├── backend/ # 纯API后端
│ ├── src/ # 核心业务逻辑
│ ├── api/ # API接口
│ ├── vendor/ # composer安装的软件包的目录
│ ├── tests/ # 测试代码
│ ├── config/ # 配置文件
│ ├── p1erp # 原有的前后端一体的代码
│ └── public/
│ ├── index.php # 统一入口,既可以调用原有的p1erp,也支持api
3、改造session的处理部分,访问传统应用的时候,采取session的处理方式,访问api时,采取jwt的处理方式。
- 改造后的文件结构如下:
├── backend
│ ├── src
│ ├── Core
│ ├── Contracts
│ ├── AuthSessionInterface.php #session接口
│ ├── Services
│ ├── Session
│ ├── PHPSession.php #PHP Session class
│ ├── JWTSession.php #JWT class
│ ├── SessionFactory.php #Session工厂 class
│ ├── session_helpers.php #Session相关的工具函数 - AuthSessionInterface.php、PHPSession.php、JWTSession.php文件的目的,是为了封装Session,将Session的创建、启动、销毁、存、取操作,通过相同的接口实现。
- 修改composer.json的autoload部分,目的是在任何地方,不需要require或者use,即可访问自定义的session()函数:
"autoload": { "psr-4": { "Services\\": "src/Services/", "Core\\": "src/Core/" }, "files" : [ "src/Services/Session/session_helpers.php" ] }, - 最终,修改传统应用中,session_start()/session_destroy()/$_SESSION等部分,比如session_start,修改为:session()->start()...
4、实现PHPSession、JWTSession和RedisDataStore部分
改造完毕,测试...
传统的php Application升级改造,将Session升级到到JWT+Redis,同时能够兼容Session的更多相关文章
- HTML5音乐播放器(最新升级改造加强版)
最近么,单位里面么老不顺心的,公司一直催要程序员要PHP,然后本宅好不容易推荐了一个,我日嘞,最后待遇变成1.3,吾师最后也同意1.3W,然后还说要考虑... 尼玛,4年多5年不到一点的工作经验,前端 ...
- IPv6升级改造包括什么?
关于IPv6技术升级具体做了什么,在我脑海里只是更换了域名解析的IP而已,所以找了这篇文章,帮助初步解惑. 原文地址:https://www.maczd.com/post/web-ipv6-upgra ...
- 优雅对API进行内部升级改造
优雅对API进行内部升级改造 背景 随着业务的快速发展老的系统将逐渐的无法快速支撑现有业务迭代重构一个必然的过程;然而在底层业务系统重构的过程中,对外提供的API也同时需要进行相应的升级替换;推动外部 ...
- AngularJS 遗留项目的升级改造之路(一)
目录 序言 遗留项目概述 条件限制下的升级原则 升级改造的演进方向 遇到的主要难点 小结 参考 1. 序言 Angular 官方网站针对 从 AngularJS 升级到 Angular 提供了比较详细 ...
- 数据平台调度升级改造 | 从Azkaban 平滑过度到 Apache DolphinScheduler 的操作实践
Fordeal的数据平台调度系统之前是基于Azkaban进行二次开发的,但是在用户层面.技术层面都存在一些痛点问题难以被解决.比如在用户层面缺少任务可视化编辑界面.补数等必要功能,导致用户上手难体验差 ...
- 海豚调度5月Meetup:6个月重构大数据平台,帮你避开调度升级改造/集群迁移踩过的坑
当今许多企业都有着技术架构的DataOps程度不够.二次开发成本高.迁移成本高.集群部署混乱等情况,团队在技术选型之后发现并不适合自己的需求,但是迁移成本和难度又比较大,甚至前团队还留下了不少坑,企业 ...
- JWT的初步了解以及session、cookie机制
1.什么是状态保持? 想要了解JWT,首先需要知道什么是状态保持,举一个例子来说:无论是在web上还是在手机app上,我们都可以以游客的身份访问,此时都会有登录/注册字眼,当我们登录之后,就会是我们的 ...
- redis来共享各个服务器的session,并同时通过redis来缓存一些常用的资源,加快用户获得请求资源的速度(转)
时间过得真快,再次登录博客园来写博,才发现距离上次的写博时间已经过去了一个月了,虽然是因为自己找了实习,但这也说明自己对时间的掌控能力还是没那么的强,哈哈,看来还需不断的努力啊!(这里得特别说明一下本 ...
- nginx之 nginx + tomcat + redis 负载均衡且session一致性
说明: 本文描述的是 nginx + tomcat + redis 实现应用负载均衡且满足session一致性,从安装到配置的全部过程,供大家学习!nginx 代理服务器ip: 10.219.24.2 ...
- 为Tornado框架加上基于Redis或Memcached的session 【第三方】
Tornado 没有session,只有cookie_secret,这在一些情况下是不利于开发的.所有我们可以给Tornado加上session的功能. 这篇文章讲解的是依靠第三方包来实现.以后的文章 ...
随机推荐
- 从洞察到决策,一文解读标签画像体系建设方法论丨DTVision分析洞察篇
一.数字营销是数字化转型排头兵 <⼗四五数字经济发展规划>中强调,要⼤⼒推进数字化转型,形成数据驱动的智能决策能⼒,提升企业整体运营效率. 要做好数字化转型,企业可从产.研.供.销.⽤等多 ...
- UFT 的三种方法获取时间
- DotTrace系列:6. 程序异常诊断 和 Request慢处理
一:背景 1. 讲故事 在我分析的众多dump中,有一些CPU爆高是因为高频的抛 Exception 导致,比如下面这张图,有 19 个线程都在抛 xxxResultException 异常. 从卦中 ...
- 如何基于three.js(webgl)引擎架构,实现3D医院、3D园区导航,3D科室路径导航
一.前言 在这个日新月异的科技时代,技术的价值不仅在于推动社会的进步,更在于如何更好地服务于人民.医院三维导航系统项目,正是技术服务于人民理念的生动体现,真正从患者出发,解决患者在复杂的医院园区找科室 ...
- [Ynoi2014] 人人本着正义之名
题传 考虑 3/4/5/6 操作,发现本质上是对某段颜色相同的段向左/右拓展. 考虑 1/2 为区间推平操作,其它操作只会减少颜色段,因此总颜色段为 \(O(n+m)\) 的,直接平衡树维护即可. 然 ...
- 第三代长安75p安装三方软件
前言 长安的车机系统是 长安与腾讯联合且基于安卓自研的 梧桐车联系统. 通过一些特殊方式,打开了车机的系统信息真身 此系统极为封闭,默认情况下,不允许安装除了车机本身应用商店之外的三方软件,本身内置的 ...
- 前端开发系列108-工程化篇之Grunt构建工具的使用
本文主要介绍前端开发中常用的构建工具Grunt,具体包括Grunt的基本情况.安装.使用和常见插件的安装.配置和使用等内容. 1.0 Grunt简单介绍 Grunt是一套前端自动化构建工具.对于需要反 ...
- docker安装和镜像管理
centos版本8.5 清除密钥文件,开机会自动生成 rm -rf ssh_host_* 清除机械id cat /dev/bull > /etc/machine-id 关机 这样的话,模版就完成 ...
- pandas速成笔记(5)-快速分析平均值、总和
接上篇继续,记得小时候读书那会儿,还没有双减,每次考试完,大家最关心的就是全班的成绩分布,假如有下面一张成绩表: 老师们通常很快就会算出『平均分.总分』这些关键指标,然后各班之间,就开始攀比: 当然, ...
- Unity帧同步框架与教程
框架: https://github.com/JiepengTan/LockstepEngine 教程: https://github.com/JiepengTan/Lockstep-Tutorial ...