2017-11-17 1 views
0

シングルサインオンマネージャによって生成されたURL経由で使用されるサイトエントリコントローラがあります。 SSOマネージャは、署名しようとしているシステムのURLにアクションパラメータとして識別ハッシュを追加します。MVCのクエリ文字列を手動で解析することなく、urlから "action"という名前のパラメータを抽出するにはどうすればよいですか?

SSOマネージャによって生成されたURLは次のようになりそう:

http://mysite/Entry/SingleSignOn?action=123456789ABCDEFG 

私はちょうどより良いルートを設定する必要があると思うが、私はそれがまだ仕事を得ることができませんでした。私はちょうどクエリ文字列を開く分割することができます知っているが、希望

public ActionResult SingleSignOn(string action) 
{ 
    // action returns "SingleSignOn" 
    var querystring = Request.Url.Query; //returns "?action=123456789ABCDEFG" 
    return RedirectToAction("Index"); 
} 

:私は結合標準MVC経由のURLからアクションを取得しようとすると、それは私に、アクションの名前ではなく、私は必要なハッシュを与えています可能であれば好まない。それはひどく複雑な問題のようには見えませんが、私は正しいルートを見つけられません。

+0

MVCに組み込まれているルーティングでは、クエリ文字列はまったく使用されません。したがって、達成しようとしていることはあまり明確ではありません。 SSOがすべての要求を '/ Entry/SingleSignOn'に送り返す場合、そのアクションメソッドでクエリ文字列を解析する必要があります。サイトの複数の場所に要求を送信できる場合は、アクションフィルタを使用してリダイレクトを行うことを検討することがあります。ログイン後にリダイレクトを行うことは珍しいことではありません。ルーティングを使用する必要がある唯一の理由は、SSOから送信されたブラウザのURLを保持することだけです。 – NightOwl888

答えて

0

Request.QueryString["action"]を使用すると、リクエストURLから明示的にパラメータ値を取得できます。

public ActionResult SingleSignOn(string action) 
{ 
    var querystring = Request.QueryString["action"]; 
    // Do something with querystring 
    return RedirectToAction("Index"); 
} 
+0

これは正しい方向への一歩です。手動でクエリ文字列を解析するよりもはるかに優れています。しかし、それは私がこれをより良くするためのルートを設定しようとしているように見えます。 – MitchelWB

+0

この問題は、フレームワークが使用するパラメータ名と同じであるためです。残念ながら、パラメータ名を変更するのは、私たちのSSOマネージャーを変更することです。そして、(例えば、 'actionTodo') – Shyju

+0

それを使って動作する他のすべてのシステムを修正し、「アクション」パラメータを期待し、その後、生態系全体を回帰テストします。私はその道を行く前にRequest.QueryStringを使用します。 – MitchelWB

関連する問題