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

.NET Framework MVC控制器跳转外部.NET Core地址时如何传递JWT Token

实现可行性说明

这个需求完全可以实现。跨域名场景下浏览器默认禁止跨域读写Cookie,因此不建议使用Cookie方案传递JWT,具体实现可选方案如下:

方案1:URL查询参数携带JWT(最易实现)

重定向时直接将JWT拼接在目标URL的查询参数中,两个项目的改造量都很小:

  • .NET Framework MVC侧控制器代码示例:
public ActionResult RedirectToCoreApp()
{
    // 此处替换为你自己生成/获取现有JWT的逻辑
    string jwtToken = "实际JWT字符串";
    string targetCoreUrl = $"https://你的Core应用域名/控制器/动作?token={Uri.EscapeDataString(jwtToken)}";
    return Redirect(targetCoreUrl);
}
  • .NET Core侧控制器接收逻辑示例:
[HttpGet]
public IActionResult ReceiveToken(string token)
{
    // 校验JWT合法性,校验通过后可以存入Core应用的Session、本地Cookie或者请求上下文供后续使用
    if (!ValidateJwt(token))
    {
        return Unauthorized();
    }
    // 后续业务逻辑
    return View();
}

注意:该方案JWT会出现在浏览器地址栏和服务端访问日志中,适合JWT有效期极短(比如5分钟以内)的场景,安全性要求高的场景建议用方案2。

方案2:临时授权码中转(安全性更高)

避免JWT直接暴露在URL中,流程如下:

  • .NET Framework MVC侧生成一个有效期极短(比如30秒)的唯一随机授权码,把JWT和授权码绑定存在公共缓存(比如Redis),或者直接把JWT加密后作为授权码
  • 重定向时只把授权码放在查询参数中传给.NET Core应用
  • .NET Core应用拿到授权码后,主动调用.NET Framework侧提供的校验接口,或者自行解密授权码拿到JWT,校验通过后完成登录态初始化

补充说明

浏览器处理301/302重定向时,不允许开发者主动自定义请求头携带JWT,因此不要尝试在RedirectResult中附加自定义请求头,该方案不符合浏览器标准逻辑,无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:06:03