2009-06-01 113 views
26

我在使用ASP.NET MVC NerdDinner教程學習ASP.NET MVC和OpenId。請求教程添加Openid支持NerdDinner ASP.NET MVC應用程序

我想將NerdDinner中的認證系統替換爲OpenId。我已經下載了最新的DotNetOpenAuth庫,但我不知道如何把它放在一起。任何人都可以幫助快速分步教程?

這是否像在庫中放置一樣簡單,還是應用程序需要進行重大更改?

+1

+1對於「我來」 – Nifle 2009-06-01 07:53:51

回答

14

一旦你下載dotnetopenid,看樣品中\ RelyingPartyMvc目錄。有一個例子,他們用OpenID代替了默認的MVC認證系統。相關代碼位於Controllers/UserController.cs中。這是驗證行動:

//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(); 
+0

我已經下載了代碼並閱讀了指示,但仍不清楚它是如何融合在一起的。 NerdDinner示例具有默認的AccountController。驗證和會員服務包含在AccountController中。上面的代碼是否需要合併到該控制器中? – TMC2K 2009-06-03 17:54:30

0

在codeplex上有一個會員入門套件,應該是您正在尋找的。如果他們遵循微軟身份驗證慣例,他們都應該遵循提供者模型(閱讀它)。

http://mvcmembership.codeplex.com/

+1

要小心這個。這已經過時了幾個月,甚至不再是開箱即用的。希望項目業主將盡快開展工作。 – 2009-06-03 05:53:13

6

好的,所以我得到了這樣的工作! 答案是下面答案的組合,加上一些控制器和視圖。

第一個download DotNetOpenAuth然後導航到示例目錄,您可以在其中找到OpenIdRelayingPartyMvc代碼。 在我的NerdDinner解決方案,

  • 我加入DotNetOpenAuth裝配
  • 增加了新的一個「UserController中」,並從樣品的UserController中的代碼複製
  • 添加using語句正確的引用,並改變了命名空間以反映NerdDinner.Controllers
  • 從樣本中重新創建類似的「用戶」視圖,適當地更改它們以反映網站主內容ID。
  • 在主控制器下添加了xrds視圖。 (不知道這是什麼)
  • 更改索引並在HomeController中添加Xrds ActionResult方法以反映示例。
  • 更改了網頁。配置文件(在根文件夾中)驗證部分以將登錄路徑更改爲新的UserController和登錄方法
  • 更改「LogOnUserControl」動作鏈接以指向新的UserControl和「登錄」和「註銷」方法。
  • 渣土周圍那些直接調用登錄功能

的各種意見眼下這部作品以有限的方式。我可以使用OpenID登錄並與NerdDinner應用程序進行交互。所以這很酷。但是有些功能還沒有工作。保存創建的晚餐不起作用,但它也不會掛起。我將不得不調查如何將AccountController中的一些成員函數遷移到UserController。我會更新這篇文章(建議和指針歡迎)。

相關問題