Skip to content

问题现象

登录平台后台(Admin)或门店后台(Store)时,点击登录提示“登录成功”,但紧接着页面跳转后立即弹出“登录状态已过期”或直接退回登录页面(接口返回 401 或 410003 Token 异常)。

根本原因

  1. Nginx 反向代理未透传鉴权请求头:EBAOZU 的 API 鉴权依赖 HTTP 请求头中的 Authori-zationAuthorization。若 Nginx 反向代理配置缺少自定义请求头透传,后端将无法接收到前端上送的 Token。
  2. 多系统 Redis 缓存冲突:同一服务器上部署了多套系统,未隔离 Redis 数据库号(SELECT)或缓存前缀(PREFIX),导致刚写入的 Token 被其他系统的请求覆盖或清空。
  3. Redis 服务异常或未重启 Swoole:修改了 .env 后未重启 Swoole,常驻进程仍在使用旧的缓存连接或过期密钥。
  4. 服务器系统时钟偏差:服务器系统时间比标准时间快或慢较多,导致签发的 JWT Token 的 exp(过期时间)或 nbf(生效时间)校验失败。

解决步骤

检查 Nginx 反向代理配置中的 Header 透传

打开站点 Nginx 配置文件,确认反向代理 location / 块中包含以下请求头配置:

nginx
location / {
    proxy_pass http://127.0.0.1:20697; # 替换为你配置的Swoole端口
    proxy_http_version 1.1;

    # 关键鉴权头透传
    proxy_set_header Authori-zation $http_authori_zation;
    proxy_set_header Authorization $http_authorization;

    # 客户端真实 IP 与 Host
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    # WebSocket 支持
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

隔离 .env 中的缓存前缀与 Redis 库

编辑项目根目录 .env 文件,确保缓存前缀与 Redis 库号独立:

ini
[CACHE]
DRIVER = redis
PREFIX = ebaozu_v4_admin_
TAG_PREFIX = tag_ebaozu_v4_

[REDIS]
REDIS_HOSTNAME = 127.0.0.1
PORT = 6379
REDIS_PASSWORD = your_redis_password
SELECT = 0

校准服务器系统时间

在终端执行 NTP 时间同步:

bash
ntpdate pool.ntp.org || chronyc makestep
date

重启 Swoole 守护进程

在 Supervisor 管理器中重启该站点的守护进程:

bash
supervisorctl restart ebaozu_v4

重启完成后,重新在浏览器中打开后台进行登录测试。

承信租多门店租赁商城系统官方文档