业务背景
整个系统有三类界面:顾客侧品牌站、门店侧商家控制台、平台侧 UpDeal/Raccoon OS 后台。三处如果各做一套登录,账号体系和密码策略必然漂移。统一鉴权的做法是:一个 auth 服务签发 JWT,各端只验 token 不碰密码;账号由平台管理员在后台统一开设,前端登录页全平台共用一套。
登录页与 token 签发

统一登录页(Raccoon OS):邮箱 + 密码登录商家控制台;提示"没有账号或忘记密码?联系平台管理员在后台为你设置"——不开自助注册,开户权收归平台管理员,从源头控制账号来源。

POST /api/auth/login:username + password 换 200 { token: eyJhbGciOiJIUzI1NiIs…, user: { id, username } };token 为 JWT,各端持同一密钥验签,到期走换发流程,刷新期间无感续期。
核心业务成果
- 品牌站 Sign in、商家控制台、平台后台共用一套登录页与 token 机制,新端接入只验签不重建账号体系;
- 密码只存在于 auth 服务,业务服务拿到的只有 token 里的用户身份,横向越权面收窄;
- 开户收归管理员后台,离职店员账号可即时停用;
- 登录验证码短信与营销短信走不同 Messaging Service,鉴权通道送达率不受营销投诉影响。
技术难点总结
- token 换发:access token 短有效期 + 换发接口静默续期,前端 401 重试一次而非直接踢回登录页;
- 密码存储:bcrypt 加盐哈希,登录接口对"用户不存在"与"密码错误"返回同一提示,避免账号枚举;
- 多端角色:同一 token 结构携带角色声明,商家端与平台端路由守卫按角色挂载,接口层二次校验;
- 会话安全:登录失败限流 + 异常提示统一化,后台开户密码由管理员设置后强制首登修改。
















































