1

ユーザーが私の Web サイトで送信する必要があるフォームがあり、コントローラーに POST します。フォーム アクションはaction="~/Home/FormCapture/"、コントローラー アクションで次のようになります。いくつかの検証ルールを実行します。

私が現在行っていることは、検証を実行しaction="https://otherServer/cgi?-submit"、ユーザーが送信したデータが入力されたまったく同じフォームと、ページの読み込み時にフォームを送信する JavaScript で構成される HTML ビューを返すことです。 .

上記は機能しますが、ロード時に送信するフォームを返す中間ステップを避けたいのですが、機能させることができないようですが、次のようなことをしたいと考えています

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

注: これはフィッシング/キャプチャ システムによるドライブのように見えるかもしれませんが (そのため)、認証 Cookie/トークンの共有を許可しないブラック ボックスの Web パブリッシング テクノロジーに行き詰まっています。アプリには、ブラック ボックス システムのユーザーがアクセスする必要があるリソースがいくつかあるため、自分のサイトから両方のサイトにログインする必要があります。そのため、ブラック ボックス システムがアプリにリンクすると、認証トークンが既に存在します。ユーザーが 2 回ログインするように求められることはありません。

4

2 に答える 2

1

OK、2 つのサーバーが同じドメインにあると仮定すると、次のような解決策がうまくいく可能性があります。

  1. ユーザーがフォームをサイトに送信します。

  2. コントローラー コードでは、WebClientクラスを使用して同じデータを他のサーバーに投稿します。

  3. おそらく、他のサーバーは cookie/sessionid/auth トークンを cookie として返します。その Cookie を WebClient から取得し、応答で渡します。

ユーザーは、あなたの認証 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 に答える