1

我有一个表单,我需要用户在我的网站上提交,该表单将发布到我的控制器。action="~/Home/FormCapture/"表单动作在控制器动作中看起来像这样我将执行一些验证规则。

我目前正在做的工作是执行我的验证,并返回一个 HTML 视图,该视图由完全相同的表单和不同的表单组成action="https://otherServer/cgi?-submit",填写用户提交的数据,以及在页面加载时提交表单的 javascript .

虽然上述方法确实有效,但我想避免返回加载时提交的表单的中间步骤,我似乎无法让它工作,但我想我想做类似的事情

return Redirect("https://otherServer/cgi?-submit", 
           FormMethods.Post, "value1=abc&val2=123");

注意:虽然这可能看起来像捕获系统的网络钓鱼/驱动器(因为它是),但我被一些不允许我共享身份验证 cookie/令牌的黑盒网络发布技术所困扰。我的app中有一些资源需要黑匣子系统的用户访问,所以我需要从我的站点登录两个站点,所以当黑匣子系统链接到我的app时,已经有一个认证token了并且不会提示用户登录两次。

4

2 回答 2

1

好的,假设两台服务器在同一个域上,这是一个可能有效的解决方案:

  1. 用户将表单提交到您的站点。

  2. 在您的控制器代码中,您使用WebClient该类将相同的数据发布到另一台服务器。

  3. 据推测,另一台服务器会将 cookie/sessionid/auth 令牌作为 cookie 传回。从 WebClient 中提取该 cookie 并将其传递到您的响应中。

用户现在应该拥有您的身份验证 cookie 和其他站点的身份验证 cookie。假设他们在同一个域中,当用户转到另一个站点时,他们应该已经过身份验证。

于 2013-02-01T17:32:53.333 回答
0

您可能已经尝试TempData避免在视图中使用 GET 参数。

TempData["your_key"] = your_model_data;
TempData.Keep();
RedirectToAction("Another_action");

现在开始行动,检索值:

Model your_model_data = TempData["your_key"] AS Model ;
于 2015-03-23T11:38:52.457 回答