これが私が今日この問題を解決した方法です。私はC#コーナーに関するこの記事から始めましたが、例は-技術的には健全ですが-少し不完全であることがわかりました。彼の言ったことはすべて正しかったのですが、私はいくつかの外部サイトにアクセスして、これをつなぎ合わせて、希望どおりに機能させる必要がありました。
ユーザーが技術的にフォームを送信していなかったのは役に立ちませんでした。彼らは私たちのサポートセンターに行くためにリンクをクリックしていましたが、httpにログインするには、サポートセンターのサイトに投稿する必要がありました。
このソリューションでは、を使用HttpContext.Current.Response.Write()
してフォームのデータを書き込み、メソッドで少しJavascriptを使用して<body onload="">
、フォームを適切なURLに送信します。
ユーザーが[サポートセンター]リンクをクリックすると、次のメソッドが呼び出されて応答が書き込まれ、ユーザーがリダイレクトされます。
public static void PassthroughAuthentication()
{
System.Web.HttpContext.Current.Response.Write("<body
onload=document.forms[0].submit();window.location=\"Home.aspx\";>");
System.Web.HttpContext.Current.Response.Write("<form name=\"Form\"
target=_blank method=post
action=\"https://external-url.com/security.asp\">");
System.Web.HttpContext.Current.Response.Write(string.Format("<input
type=hidden name=\"cFName\" value=\"{0}\">", "Username"));
System.Web.HttpContext.Current.Response.Write("</form>");
System.Web.HttpContext.Current.Response.Write("</body>");
}
このメソッドの鍵は、Javascriptのonloadビットにあります。これは、ページの本文が読み込まれると、フォームを送信してから、ユーザーを自分のホームページにリダイレクトします。そのちょっとしたフードゥーの理由は、私が新しいウィンドウで外部サイトを立ち上げているが、ユーザーがページを更新した場合に非表示のフォームを再送信することを望まないためです。さらに、その隠されたフォームは、ページを数ピクセル押し下げて、私の神経質になりました。
私は誰もがこれについて持っているよりクリーンなアイデアに非常に興味があります。
エリック・シップル