Files
crmeb-mp/.hermes/note-backend-jwt-changes.md

1.4 KiB
Raw Permalink Blame History

后端 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

原始代码可能类似:

$payload = [
    'iss' => 'crmeb',
    'iat' => time(),
    'exp' => time() + 86400 * 7,
    'id'  => $user->id,
];
$token = JWT::encode($payload, $key, 'HS256');

改为(添加 uid、phone、openid):

$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 应看到:

{
  "uid": 123,
  "phone": "13800000000",
  "openid": "o123_xxx",
  "exp": 1748000000,
  "iss": "crmeb",
  "iat": 1747395200
}

前端 parseJwt() 就能正确读取这些字段。