我有一个表单,我需要用户在我的网站上提交,这将POST到我的控制器。表单操作在控制器操作中看起来像action="~/Home/FormCapture/"
我将执行一些验证规则。
我目前正在做的是,执行我的验证,并返回一个HTML视图,该视图由完全相同的表单和不同的action="https://otherServer/cgi?-submit"
组成,并填写用户提交的数据,以及在页面加载时提交表单的javascript。
虽然上面的确有效,但我想避免返回一个在加载时提交的表单的中间步骤,我似乎无法让它工作,但我想我想做类似的事情
return Redirect("https://otherServer/cgi?-submit",
FormMethods.Post, "value1=abc&val2=123");
注意:虽然这可能看起来像捕获系统的网络钓鱼/驱动器(因为它),我仍然坚持使用一些黑盒子网络发布技术,不允许我共享身份验证cookie /令牌。我的应用程序中有一些资源需要黑盒系统的用户访问,所以我需要从我的站点登录到这两个站点,所以当黑盒系统链接到我的应用程序时,已经有一个身份验证令牌并且不会提示用户登录两次。
答案 0 :(得分:1)
好的,假设这两个服务器位于同一个域中,这里有一个可行的解决方案:
用户将表单提交到您的网站。
在您的控制器代码中,您使用WebClient
类将相同的数据发布到其他服务器。
据推测,其他服务器会将cookie / sessionid / auth令牌作为cookie传回。从WebClient中提取该cookie并将其传递给您的响应。
用户现在应该拥有您的身份验证cookie和其他站点的身份验证cookie。假设它们位于同一个域中,当用户转到其他站点时,它们应该已经过身份验证。
答案 1 :(得分:0)
您可以尝试TempData
以避免在视图中使用GET参数。
TempData["your_key"] = your_model_data;
TempData.Keep();
RedirectToAction("Another_action");
现在正在执行,检索值:
Model your_model_data = TempData["your_key"] AS Model ;