1

私はシングル サインオンソリューションを使用しています。つまり、ユーザーは 1 つのサイトにログインすると、別のサイトにリダイレクトされます。ユーザーをリダイレクトするときに、ユーザーの認証ステータスを確認するために使用できるキーを渡したいと思います。

私が読んだシングル サインオンの例のほとんどは、暗号化されたキーを渡すログイン サイトにクエリ文字列値があることを示しています。これは非常に良い解決策ではないと思います。なぜなら、REST にあまり対応していないか、あなたがそれを呼びたいものではないからです。代わりに、 POSTデータで暗号化されたキーを渡したいと思います。したがって、ユーザーがログインすると、別の URL に投稿されます。

Response.Redirect残念ながら、 orでこれを行う方法は (まだ) わかりませんServer.TransferResponse.Redirectリダイレクト時に同じ POST データを渡すと思います。

リダイレクト中にPOSTデータを変更して、asp.netでWebサイトユーザーをリダイレクトする方法を知っている人はいますか?

(おまけの質問: リダイレクト中に GET を POST に変更できますか?)

4

1 に答える 1

3

Server.Transfer基本的に、ユーザーから送信された同じリクエストを新しいエンドポイントに転送しているため、移行中のフォーム データ (POST 値) を維持する機能があります。

Request.Redirectリダイレクトは本質的にエンドユーザーに「代わりにここに行ってください」という応答を返すため、POST データを永続化できません。その後、クライアントはその新しいエンドポイントに対して新しい要求を開始します。クライアントは、2 番目の別の要求で POST データを再送信しません。

ただし、POST と GET だけでは多かれ少なかれ RESTful ではありません。どちらもデータの文字列であり、リクエストの部分がわずかに異なるだけです。クリーンでクエリ文字列のない URL は「REST のように見える」かもしれませんが、表面的なものです。

次の図は、2 つの異なるアプローチがどのように機能するかを示しています。ご覧のとおり、リダイレクトの場合、ターゲット URL への新しい要求を作成するのはクライアントの手に委ねられているため、POST データを変更することは不可能です。Transfer の場合、新しいハンドラーに追加のデータを渡す必要がある場合は、自分で行うことができるため、(技術的に可能だったとしても) 意味がありません。

代替テキスト http://rexmorgan.net/rr_vs_st.jpg

于 2009-09-27T00:42:32.220 に答える