You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在新微服务中对原有Laravel系统的已登录用户进行身份认证与授权?

新微服务身份认证与授权落地方案

方案1:基于Laravel已有Session共享实现(改造成本最低,适合快速上线)

  • 前提:你的Laravel老系统和新微服务部署在同一个父域名下,比如老系统是app.xxx.com,新微服务API是api.xxx.com,Session的Cookie域设置为.xxx.com根域名
  • 操作步骤:
    1. 先修改Laravel的config/session.php里的domain配置项为.你的根域名,确保Session Cookie能在所有子域名下携带
    2. 新React应用发起请求的时候自动带上根域名下的Cookie,新微服务侧做两个验证逻辑:
      • 先读取请求携带的Session ID,去Laravel共用的Session存储(比如Redis/MySQL,和老系统连同一个实例)里查对应的用户ID是否存在、是否有效
      • 再去共用的用户库里拉取用户的权限信息,完成授权校验
    3. 这种方式完全复用老系统的登录逻辑,用户无感知,不需要额外做登录跳转,上线最快
  • 注意点:如果新微服务不是PHP栈也没关系,只要能连到老系统的Session存储介质,按照Laravel 5.2的Session序列化规则解析就行,Laravel默认的Session序列化是PHP序列化格式,其他语言找对应的解析库就能读。

方案2:JWT Token对接方案(适合后续要扩展多端、微服务集群规模大的场景)

  • 操作步骤:
    1. 老Laravel系统新增一个临时Token生成接口,用户从老系统跳转到React应用的时候,老系统后台根据当前登录的用户ID生成一个有效期极短(比如5分钟)的一次性JWT Token,跟着跳转参数传给React应用
    2. React应用拿到这个临时Token之后,调用新微服务的统一认证接口,用临时Token换有效期更长的业务访问Token(Access Token)和刷新Token(Refresh Token),后续所有业务请求都在Header里带Authorization: Bearer {Access Token}
    3. 新微服务侧统一做Token校验:可以直接用JWT的验签逻辑(签名秘钥和认证服务统一),如果是细粒度权限就对接共用的用户权限库拉取对应权限做校验
  • 优势:完全解耦新老系统的认证逻辑,后续如果老系统下线、或者要做APP/小程序等其他端接入,不需要改微服务的认证逻辑,扩展性更强,也不需要跨域带Cookie,更适合微服务架构的后续迭代。

授权逻辑统一处理建议

  • 因为用户库是共用的,建议把用户的角色、权限数据也存在共用的存储里,新老系统的权限规则保持一致,如果后续要做权限拆分再单独抽权限中心就行,前期不用搞太复杂的权限中心,避免增加不必要的开发成本。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:15:02