2011-06-27 1 views
0

私はプロジェクトを変換しています:OpenIdRelyingPartyMvcとOpenIdProviderMvcは同じコードベースになりました。私はこれらの機能の両方を提供できるウェブサイトを持っていたいと思っています。MVC RelyingPartyとProviderを単一コードベースとして

私のリストに残っている統合部分は次のとおりです。 global.asaxで指定され

ケース1
OpenIdProviderMvcは、以下の経路を必要とします。しかし、これらのルートを持つとOpenIdRelyingPartyMvcはOpenIDのテキストボックスとログインボタンを表示しなくなります。代わりに「これはログインのOpenIDのIDページです」と表示されます。

//-- OpenIdProviderMvc requires these, however, it breaks OpenIdRelyingPartyMvc 
routes.MapRoute(
    "User identities", 
    "user/{id}/{action}", 
    new {controller = "User", action = "Identity", id = string.Empty, anon = false}); 
routes.MapRoute(
    "PPID identifiers", 
    "anon", 
    new {controller = "User", action = "Identity", id = string.Empty, anon = true}); 

ケース2
第2の相違点は、web.configファイル内のフォーム認証です。

//-- OpenIdRelyingPartyMvc 
<forms defaultUrl="~/Home" loginUrl="~/User/Login" name="OpenIdRelyingPartyMvcSession"/> 

//-- OpenIdProviderMvc 
<forms loginUrl="~/Account/LogOn" timeout="2880" name="ProviderMvcSession"/> 

これらの2つのケースでどのように統合を完了できますか?

はあなたに

答えて

0

注意をありがとう:現在、私の要件は、サイトごとに単一のユーザーです。

私が見つけた解決策は次のとおりです。

  1. すべての用語および「ログイン」を「ログオン」の変化、「ログオフ」と「ログアウト」のアクション。

  2. アカウント/ログイン

    /にホームページ上の単一のリンクをお持ちのアカウント/ログインが同じページ上のユーザーログインおよびOpenIDでのログインの両方を持つことです。また、基本的に単なる認証されたメンバーエリアであるため、アイデンティティをアカウントコントローラに移動し、UserController /アクションを削除する必要があります。すべてのXRDS XML文書はXRDSパーティやXRDS-プロバイダーrespectivly名前を付けても、必要なことを(1)

  3. によって変更としてあまりにも/アカウント/ログインバージョン(web.configファイル)なるように

  4. フォーム認証周囲のレイアウトなしでxmlとしてビューから返されるようにします。私は他のメソッドの助けを借りてContent()を返すためにView()を返す代わりにこれを行うことができました。http://learningdds.com/public/ControllerExtension.cs

  5. Log4netは特に "エンドポイントが見つかりませんでした"エラー。また、返されたxmlドキュメントがxmlで囲まれていることがわかりました。

最後に、上記の手順は、ソリューションを単一コードベースに変換する完全なガイドではありません。うまくいけばそれはあなたを助け、Qsにお気軽にお尋ねします。