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

NestJS搭建SSO服务时外部URL重定向不生效问题

NestJS搭建SSO服务外部URL重定向失效问题

使用NestJS搭建SSO单点登录服务,为前端应用及API提供身份认证能力时,遇到重定向到外部URL失效的问题。

认证流程设计

  • 外部前端携带回调重定向地址跳转至SSO服务发起认证请求
  • SSO服务将请求重定向至登录页面
  • 用户提交个人账号凭证完成登录操作
  • SSO服务校验用户身份合法后,使用前端传入的重定向地址,携带JWT凭证与用户信息完成最终跳转

现有登录接口实现

Auth控制器中编写的登录接口处理逻辑如下:

@Post('auth/login')
  async login(@Body() body, @Res() res: Response) {
    const authResponse = await this.authService.login(body.user, body.password);

    if (authResponse.error) {
      return res.render('login', {
        title: '',
        redirect: body.redirect,
        errors: [{ msg: authResponse.error }],
      });
    } else {
      res.redirect(`${body.redirect}?token=${authResponse.token}`);
    }
  }

问题现象

当用户身份校验通过执行重定向逻辑时,NestJS服务日志无任何相关输出,页面也未发生跳转。已测试的重定向目标URL包括http://google.cl、http://localhost:4200。

已尝试排查方案(均未解决问题)

  • 在redirect方法中指定200 HTTP状态码,执行后页面跳转至空白页,仅显示OK, redirecting to URL提示
  • 使用框架提供的@Redirect()装饰器实现重定向,效果与之前一致
  • 重定向至SSO服务自身的其他接口可正常生效,仅外部URL跳转存在异常
  • 在res.redirect调用前添加return关键字返回执行结果,仍无效果

补充排查记录

  • 先重定向至服务内部接口,再由该内部接口执行外部URL跳转
  • 重定向时尝试使用301、302、304、200等不同HTTP状态码

当前服务CORS配置

app.enableCors({
    origin: '*',
    methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
  });

求助:是否有开发者遇到过同类问题,可提供解决思路?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:15:39