26

ASP.NET MVC NerdDinnerチュートリアルを使用して、ASP.NETMVCとOpenIdについて学習したいと思っています。

NerdDinnerの認証システムをOpenIdのみに置き換えたいと思います。最新のDotNetOpenAuthライブラリをダウンロードしましたが、すべてをまとめる方法がわかりません。誰かが簡単なステップバイステップのチュートリアルを手伝ってもらえますか?

これはライブラリにドロップするのと同じくらい簡単ですか、それともアプリケーションに重要な変更が必要ですか?

4

5 に答える 5

14

dotnetopenidをダウンロードしたら、samples\RelyingPartyMvcディレクトリを確認します。デフォルトのMVC認証システムをOpenIDに置き換えるサンプルがあります。関連するコードはControllers/UserController.csにあります。Authenticateアクションは次のとおりです。

//Stage 1: Show form asking for Open ID identifier URL
var openid = new OpenIdRelyingParty();
if (openid.Response == null) {
    // Stage 2: user submitting Identifier
    Identifier id;
    if (Identifier.TryParse(Request.Form["openid_identifier"], out id)) {
            openid.CreateRequest(Request.Form["openid_identifier"]).RedirectToProvider();
    } else {
            ViewData["Message"] = "Invalid identifier";
            return View("Login");
            }
} else {
    // Stage 3: OpenID Provider sending assertion response
    switch (openid.Response.Status) {
        case AuthenticationStatus.Authenticated:
            FormsAuthentication.RedirectFromLoginPage(openid.Response.ClaimedIdentifier, false);
            break;
        case AuthenticationStatus.Canceled:
            ViewData["Message"] = "Canceled at provider";
            return View("Login");
        case AuthenticationStatus.Failed:
            ViewData["Message"] = openid.Response.Exception.Message;
            return View("Login");
    }
}
return new EmptyResult();
于 2009-06-02T14:02:01.230 に答える
7

NerdDinner固有ではありませんが、ASP.NETMVCアプリケーションにOpenIdサポートを実装したい場合に役立つ可能性があります。

于 2009-06-01T09:52:32.400 に答える
6

さて、私はこの種の作業をしました!答えは、以下の答えと、コントローラーとビューをいじくり回したものの組み合わせです。

最初にDotNetOpenAuthをダウンロードしてから、OpenIdRelayingPartyMvcコードを見つけることができるサンプルディレクトリに移動します。私のNerdDinnerソリューションでは、

  • DotNetOpenAuthアセンブリへの参照を追加しました
  • 新しい「UserController」を追加し、サンプルのUserControllerからコードにコピーしました
  • 正しいusingステートメントを追加し、NerdDinner.Controllersを反映するように名前空間を変更しました
  • サンプルから同様の「ユーザー」ビューを再作成し、サイトマスターコンテンツIDを反映するように適切に変更しました。
  • ホームコントローラーの下にxrdsビューを追加しました。(これがまだ何をしているのかわからない)
  • インデックスを変更し、サンプルを反映するようにHomeControllerにXrdsActionResultメソッドを追加しました。
  • web.configファイル(ルートフォルダー内)の認証セクションを変更して、ログインパスを新しいUserControllerとLoginメソッドに変更しました
  • 「LogOnUserControl」アクションリンクを変更して、新しいUserControlメソッドと「Login」メソッドおよび「Logout」メソッドを指すようにします。
  • ログオン機能を直接呼び出すさまざまなビューをいじくりまわす

現在、これは限られた方法で機能します。OpenIDを使用してNerdDinnerアプリにログオンして操作できます。かっこいいです。ただし、一部の機能はまだ機能していません。作成したディナーを保存することはできませんが、ハングすることもありません。AccountControllerのメンバーシップ機能の一部をUserControllerに移行する方法を調査する必要があります。この投稿を更新します(提案とポインタを歓迎します)。

于 2009-06-03T22:17:37.040 に答える
1

Samples / OpenIdRelyingPartyMvcディレクトリ(OpenId認証を使用する単純なASP.NET MVC Webサイト)を確認してください。ホーム/ユーザーコントローラー/ビューと設定をweb.configからプロジェクトにコピーすることから始めることができます。あなたのサイトにOpenId認証を与える最も速い方法だと思います。次に、Alexander Prokofyevが言ったように、 Andrew Arnott(DotNetOpenAuth / DotNetOpenId作成者)のブログに非常に役立つ投稿があります-ASP.NETMVCサイトにOpenIDログインサポートを追加します

于 2009-06-01T17:47:18.443 に答える
0

あなたが探しているものでなければならないcodeplexのメンバーシップスターターキットがあります。マイクロソフトの認証規則に従っている場合は、両方ともプロバイダーモデルに従っている必要があります(それを読んでください)。

http://mvcmembership.codeplex.com/

于 2009-06-01T08:31:53.500 に答える