Laravel应用与NodeJS API间单点登录(SSO)实现方案咨询
跨应用自动登录的可行方案
针对你的场景(Laravel单体应用 + NodeJS API + Vue前端独立应用),以下是几个实用的实现方式:
1. JWT跨域身份验证
- 核心逻辑:利用Laravel生成的JWT作为跨应用身份凭证,Vue前端先验证Laravel登录状态,再用JWT访问NodeJS API
- 实现步骤:
- Laravel端配置JWT(可使用
tymon/jwt-auth扩展),新增接口接收Vue前端请求(携带Laravel登录Cookie),验证用户已登录后返回签名JWT。 - Vue前端初始化时,先请求该Laravel接口:若用户已登录Laravel,即可获取JWT并存储在
localStorage/sessionStorage中。 - 后续Vue请求NodeJS API时,在请求头携带
Authorization: Bearer {JWT}。 - NodeJS API使用
jsonwebtoken库验证JWT有效性(与Laravel共用密钥),验证通过则视为用户已登录,返回对应数据。
- Laravel端配置JWT(可使用
- 注意事项:
- 配置Laravel的CORS规则允许Vue域名跨域请求,同时将Cookie设置为
SameSite=None和Secure(仅HTTPS环境),确保跨域可携带Cookie。 - 合理设置JWT过期时间,可配合刷新令牌机制避免频繁重新验证。
- 配置Laravel的CORS规则允许Vue域名跨域请求,同时将Cookie设置为
2. 共享Redis Session
- 核心逻辑:让Laravel和NodeJS共用Redis存储Session,通过Session ID跨应用验证用户身份
- 实现步骤:
- 将Laravel的Session驱动改为Redis,配置好Redis连接信息。
- NodeJS API连接同一Redis实例,按照Laravel的Session键名规则(默认
laravel_session:{session_id})读取Session数据。 - Vue前端访问时,先向Laravel请求获取Session ID(或直接读取Cookie中的
laravel_session值),传给NodeJS API。 - NodeJS API通过Session ID从Redis取出Laravel Session数据,验证用户登录状态,通过后生成本地登录凭证(如JWT或本地Session)返回给Vue。
- 注意事项:
- 确保Laravel与NodeJS的Redis连接配置一致,包括前缀、数据库编号等。
- 同样需处理跨域Cookie携带问题,参考JWT方案的CORS配置。
3. OAuth2授权码模式(推荐)
- 核心逻辑:将Laravel作为OAuth2服务端,NodeJS API作为客户端,通过标准授权流程实现自动登录
- 实现步骤:
- Laravel端用Laravel Passport搭建OAuth2服务端,创建NodeJS API对应的客户端,获取客户端ID和密钥。
- Vue前端初始化时跳转到Laravel授权页面(因用户已登录Laravel,会自动完成授权),授权后Laravel返回授权码给Vue。
- Vue将授权码传给NodeJS API,NodeJS API用授权码向Laravel请求访问令牌(Access Token)。
- NodeJS API拿到令牌后,调用Laravel用户信息接口获取用户数据,再为Vue生成本地登录会话(如设置Cookie或返回JWT)。
- 注意事项:
- 该方式符合行业标准,安全性高,适合后续扩展多应用场景。
- 需配置Laravel Passport的回调地址为NodeJS API的对应接口,确保授权流程正常。
4. 同域名下的Cookie共享
- 核心逻辑:若两个应用共享主域名(如
app1.yourdomain.com和app2.yourdomain.com),通过共享Cookie实现自动登录 - 实现步骤:
- Laravel的登录Cookie设置
domain=.yourdomain.com,让所有子域名可访问该Cookie。 - Vue前端访问时自动携带Laravel登录Cookie,向NodeJS API发送请求。
- NodeJS API拿着该Cookie请求Laravel验证接口,确认用户已登录后创建本地登录会话。
- Laravel的登录Cookie设置
- 注意事项:
- 仅适用于共享主域名场景,且必须使用HTTPS协议,同时设置Cookie的
Secure属性,防范CSRF风险。
- 仅适用于共享主域名场景,且必须使用HTTPS协议,同时设置Cookie的
内容的提问来源于stack exchange,提问作者Tharindu Thisarasinghe
相关产品推荐
相关产品推荐

