Laravel 根据 Session ID 获取相关值 作者: Chuwen 时间: 2022-10-10 分类: Laravel 评论 ## 背景 - 「A 系统」域名 `admin.xxxx.com` - 使用的是 Dcat Admin,Session 身份认证 - 「A1 系统」域名 `api.sass.com` - 使用 JWT 身份认证 因为项目有个需求,需要从「A 系统」访问「A1 系统」,实际上是「A 系统」生成 JWT 传递给「A1 系统」,JWT 格式如下: > 使用 `sub` 标记是谁生成的,让「A1 系统」能够进行判断 ![](https://cdn.nowtime.cc/2022/10/10/3948634876.png) 需要实现「A 系统」退出登录,「A1 系统」的 JWT 信息就不能通过认证 因为这 2 个系统是共用一套代码的,所以想到了使用 `Session ID` 写入 JWT `payload` 中,然后「A1 系统」拿到 `Session ID` 去校验 ## 实现 ### 拿到 Laravel Session ID 「A 系统」通过 `Illuminate\Support\Facades\Session::getId()` 拿到长度为 40 的 `Session ID`,生成 JWT 传递给「A1 系统」使用 ![](https://cdn.nowtime.cc/2022/10/10/3680874563.png) ### 「A1 系统」校验 Session ID 是否存在 示例代码如下: ```php // 这里实际需要替换为从 JWT 解析,拿到 `session_id` 字段 $sessionId = ''; $data = Illuminate\Support\Facades\Session::getHandler()->read($sessionId); if(empty($data)){ // TODO: SessionID 不存在,请检查 } ```
解决 Laravel 使用 asset 函数加载资源为 http 协议 / Laravel Horizon 加载资源为 http 协议 作者: Chuwen 时间: 2022-09-14 分类: Laravel 评论 ## 背景 搭建了个 horizon,使用 https 打开,但是打开的界面是下图所示 ![](https://cdn.nowtime.cc/2022/09/14/1313617905.png) 一看加载的资源是 http 的,那难怪页面无法正常加载 ![](https://cdn.nowtime.cc/2022/09/14/3272764795.png) ## 解决办法 在 Google 搜索中,找到了这条答案:https://stackoverflow.com/a/68287406 我认为这才是最标准的解决方案 ![](https://cdn.nowtime.cc/2022/09/14/3851952200.png) 比起那些去改 `AppServiceProvider.php` 靠谱多了 ### 总结下用法 你只需要在 `.env` 文件里配置号 `ASSET_URL` 环境变量即可,像我这样 ```env ASSET_URL=https://cdn.nowtime.cc ``` ![](https://cdn.nowtime.cc/2022/09/14/2079937305.png) ### 完美解决 ![](https://cdn.nowtime.cc/2022/09/14/1362905301.png)
Laravel Middleware(中间件) 设置登录信息(User Model) 作者: Chuwen 时间: 2022-06-29 分类: Laravel,PHP 评论 Laravel Middleware(中间件) 设置登录信息(User Model),然后在其它地方使用如 Controller(控制器) ### UserAdminAuthGuard 中间件 ```php firstOrFail()); return $next($request); } } ``` ### UserController - HTTP 控制器 ```php
Laravel 控制器测试 作者: Chuwen 时间: 2022-06-02 分类: Laravel,PHP 评论 ## 新建控制器名字为 ForExampleController.php ```php get('domain')) { return response([ 'code' => 400, 'msg' => '错误的参数', ]); } return response([ 'code' => 200, 'msg' => '验证通过', ]); } } ``` ## 新建测试文件名字为 ForExampleControllerTest.php ```php 'nowtime.cc', ]); $forExampleController = new ForExampleController(); $res = json_decode($forExampleController->index($request)->getContent(), true); self::assertEquals(200, $res['code']); } } ``` 运行测试结果: ![](https://cdn.nowtime.cc/2022/06/02/2598889823.png)
Laravel 使用 Pipeline 实现 AOP(我不太清楚是否真属于 AOP 我也是一知半解,如有误请指正!) 作者: Chuwen 时间: 2022-05-05 分类: PHP 评论 ### 参考链接: 1. https://learnku.com/laravel/t/7543/pipeline-pipeline-design-paradigm-in-laravel 2. https://learnku.com/articles/44435 gist : https://gist.github.com/PrintNow/cbfe2db1b809bf72328a97ad9bd4449b --- ```php send($input) ->through([ RemoveBadWords::class, ReplaceWords::class, ]) ->then(function ($content) { return $content; }); echo "最终处理结果:$output"; ``` ## 运行结果 ![](https://cdn.nowtime.cc/2022/05/05/2571709060.png)