传统的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部分
改造完毕,测试...

浙公网安备 33010602011771号