# 后端 JWT Token 签发 — 需要添加的修改 以 CRMEB 后端 PHP 为例,找到签发 token 的方法(通常在类似以下位置): ## 1. 查找签发位置 CRMEB 后端搜索 `JWT::encode` 或 `makeToken` / `createToken`: - `crmeb/app/services/system/SystemAuthService.php` - `crmeb/app/services/other/CacheTokenService.php` - 或 `crmeb/app/services/wechat/...` ## 2. 修改 Payload 原始代码可能类似: ```php $payload = [ 'iss' => 'crmeb', 'iat' => time(), 'exp' => time() + 86400 * 7, 'id' => $user->id, ]; $token = JWT::encode($payload, $key, 'HS256'); ``` 改为(添加 uid、phone、openid): ```php $payload = [ 'iss' => 'crmeb', 'iat' => time(), 'exp' => time() + 86400 * 7, 'uid' => $user->id, // ← 添加:用户 ID 'phone' => $user->phone ?? '', // ← 添加:手机号 'openid' => $user->openid ?? '', // ← 添加:微信 openid ]; $token = JWT::encode($payload, $key, 'HS256'); ``` ## 3. 验证 修改后登录任意用户,token 形如: ``` eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEyMywicGhvbmUiOiIxMzgwMDAwMDAwMCIsIm9wZW5pZCI6Im8xMjNfIn0.xxxx ``` 在浏览器 DevTools 或 https://jwt.io 解码 payload 应看到: ```json { "uid": 123, "phone": "13800000000", "openid": "o123_xxx", "exp": 1748000000, "iss": "crmeb", "iat": 1747395200 } ``` 前端 `parseJwt()` 就能正确读取这些字段。