2012-01-26 7 views
4

私はDotNetOpenAuthサンプルで遊んで、OpenIDと正しく統合する方法を理解しようとしています。サンプルの1つはOpenIdRelyingPartyMvcです。 2つのコードセクションがあり、それらがどのように機能に影響を与えるかはわかりません。 Global.asax.csでDotNetOpenAuthとX-XRDS-ロケーションヘッダー

  • routes.MapRoute(
        "Default",            // Route name 
        "{controller}/{action}/{id}",       // URL with parameters 
        new { controller = "Home", action = "Index", id = string.Empty }); // Parameter defaults 
    
    routes.MapRoute(
        "Root", 
        string.Empty, 
        new { controller = "Home", action = "Index", id = string.Empty }); 
    

私は "ルート" をマッピングし、最後の行を削除すると、何も影響を受けているように見えるん:マッピング "デフォルト" は十分であると思われます。なぜルートルートがありますか? HomeController.cs

public class HomeController : Controller { 
    public ActionResult Index() { 
     Response.AppendHeader(
      "X-XRDS-Location", 
      new Uri(Request.Url, 
       Response.ApplyAppPathModifier("~/Home/xrds")).AbsoluteUri); 
     return View("Index"); 
    } 

    public ActionResult Xrds() 
    { 
     return View("Xrds"); 
    } 
} 

私は "AppendHeader" コールを削除して、サンプルをテストする場合、それはまだ作品に

  • !私はこのヘッダーが十分であることを理解しています。私はサンプルアプリケーションをそれに依存させることができません。セットアップされていなくても動作します。 Xrdsメソッドの中でブレークポイントを設定すると、決してトリガされません。

答えて

3

global.asax.csのルートが余分な場合があります。

削除しようとしているX-XRDS-Locationヘッダーは、OpenIDフローには厳密には必要ではありませんが、外に出ずに依頼者アプリケーションを公開する場合はYahoo! and other OpenID Providers may warn the user that your site is not legitとなります。

OpenIdProviderWebFormsサンプルを実行し、そのサンプルOPの識別子を使用してRPにログインすることで、これをローカルにテストすることができます(したがって、実行されているホーム/ Xrdsアクションを観察できます)。ログイン中、OPはRPのXRDSに照会し、Webページ上でログインを確認するように要求すると、「RP検証」が成功したか失敗したかを示します。それが成功すれば、あなたは良いことになるはずです。

+0

ありがとうアンドリュー、私はあなたからの答えを期待していました:-)それは今私にとっては明らかです。 –

関連する問題