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

如何在ASP.NET Core重定向时向ASP Classic传递登录请求数据?

解决方案:模拟表单自动提交传递POST数据

Redirect方法本质是返回3xx重定向响应,浏览器会自动发起GET请求访问目标地址,因此无法携带原POST请求中的用户名、密码等数据。要解决这个问题,需要模拟Public站点的表单提交逻辑,通过后端生成一个自动提交的临时页面,将数据以POST方式发送到OldProvider的Login.asp。

实现步骤

1. 在.NET 8的Controller中调整跳转逻辑

不再使用Redirect,而是返回一个专门用于自动提交的View,并将需要传递的参数传入View:

public IActionResult RedirectToOldLogin(string username, string password)
{
    // 将需要传递的参数传入View
    ViewData["Username"] = username;
    ViewData["Password"] = password;
    // 如果有其他需要传递的字段,同理添加到ViewData中
    return View("AutoPostToOldLogin");
}

2. 创建自动提交的View页面

新建一个名为AutoPostToOldLogin.cshtml的View文件,内容如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>跳转中...</title>
    <script>
        // 页面加载完成后自动提交表单
        window.addEventListener('load', function() {
            document.getElementById('oldLoginForm').submit();
        });
    </script>
</head>
<body>
    <form id="oldLoginForm" action="@Configuration["PortalUrl"]/Login.asp" method="POST">
        <!-- 隐藏字段传递用户名、密码,名称要和OldProvider的Login.asp接收的字段完全一致 -->
        <input type="hidden" name="username" value="@ViewData["Username"]" />
        <input type="hidden" name="password" value="@ViewData["Password"]" />
        <!-- 其他需要传递的字段在此添加 -->
        
        <p>正在跳转,请稍候...如果长时间未跳转,请点击<button type="submit">手动提交</button></p>
    </form>
</body>
</html>

关键说明

  • 这个方案完全模拟了Public站点的表单提交流程,OldProvider的Login.asp可以像处理原表单请求一样读取POST参数,无需修改ASP Classic代码。
  • 确保所有字段的name属性与Public、OldProvider的表单字段完全一致(你已确认这一点,无需额外调整)。
  • 为了安全,务必确保站点使用HTTPS协议,避免明文传递敏感数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 20:15:13