2009-06-01 23 views
26

Tôi đang tìm hiểu về ASP.NET MVC và OpenId bằng cách sử dụng hướng dẫn ASP.NET MVC NerdDinner.Yêu cầu Hướng dẫn thêm Hỗ trợ Openid vào ứng dụng NerdDinner ASP.NET MVC

Tôi muốn thay thế hệ thống Xác thực trong NerdDinner thành chỉ OpenId. Tôi đã tải xuống các thư viện DotNetOpenAuth mới nhất nhưng tôi không chắc chắn làm thế nào để đặt tất cả lại với nhau. Bất cứ ai có thể giúp với một hướng dẫn từng bước nhanh chóng?

Điều này đơn giản như việc bỏ thư viện hay có thay đổi đáng kể cần thiết cho ứng dụng?

+1

+1 cho "tôi tới" – Nifle

Trả lời

14

Khi bạn tải dotnetopenid, hãy nhìn vào các mẫu \ RelyingPartyMvc thư mục. Có một mẫu mà họ thay thế hệ thống xác thực MVC mặc định bằng OpenID. Mã có liên quan nằm trong Controllers/UserController.cs. Dưới đây là hành động Xác thực:

//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

Tôi đã tải xuống mã và đọc hướng dẫn, nhưng vẫn chưa rõ cách tất cả khớp với nhau. Mẫu NerdDinner có AccountController mặc định. Xác thực và các dịch vụ thành viên được chứa trong AccountController. Mã trên có cần được hợp nhất vào bộ điều khiển đó không? – TMC2K

+0

Đoạn mã trên sử dụng bộ điều khiển gọi là UserController. Điều này về cơ bản là một sự thay thế cho AccountController. Bạn chỉ cần cập nhật cho bạn các liên kết hoặc tuyến đường để trỏ đến nó cho phù hợp. – nikmd23

+0

Mẫu này dường như sử dụng gói dotnetopenid và không phải là gói dotnetopenauth mới hơn thay thế nó. – itchi

0

Có bộ thành viên khởi động trên codeplex phải là những gì bạn đang tìm kiếm. Cả hai đều nên theo dõi mô hình nhà cung cấp (đọc lên trên) nếu họ tuân theo quy ước xác thực microsoft.

http://mvcmembership.codeplex.com/

+1

Hãy cảnh giác với điều này. Đó là vài tháng đã lỗi thời và thậm chí không biên dịch ra khỏi hộp nữa. Hy vọng rằng các chủ dự án sẽ sớm thu hồi nó. –

1

Look tại thư mục Samples/OpenIdRelyingPartyMvc (một trang ASP.NET MVC đơn giản sử dụng xác thực OpenId). Bạn có thể bắt đầu sao chép Trang chủ/Bộ điều khiển người dùng/Chế độ xem và cài đặt từ web.config vào dự án của bạn. Tôi nghĩ rằng đó là cách nhanh nhất để cung cấp cho xác thực OpenId trang web của bạn. Sau đó, as Alexander Prokofyev said, có bài rất hữu ích tại Andrew Arnott's (DotNetOpenAuth/DotNetOpenId author) blog-Add OpenID login support to your ASP.NET MVC site

6

Ok, Vì vậy, tôi có loại công việc này! Câu trả lời là một sự kết hợp của các câu trả lời bên dưới cộng với một số mucking xung quanh với các bộ điều khiển và quan điểm.

Đầu tiên download DotNetOpenAuth và sau đó điều hướng đến thư mục mẫu nơi bạn có thể tìm thấy mã OpenIdRelayingPartyMvc. Trong giải pháp NerdDinner tôi,

  • Tôi đã thêm một tham chiếu đến assembly DotNetOpenAuth
  • thêm mới một "UserController" và sao chép trong các mã từ UserController của mẫu
  • thêm những điều khoản sử dụng chính xác và thay đổi không gian tên để phản ánh NerdDinner.Controllers
  • tạo lại chế độ xem "Người dùng" tương tự từ mẫu, thay đổi chúng một cách thích hợp để phản ánh id nội dung chính của trang web.
  • đã thêm chế độ xem xrd dưới bộ điều khiển chính. (chưa chắc chắn về điều này)
  • thay đổi chỉ mục và thêm các phương thức ActionResult Xrds trong HomeController để phản ánh mẫu.
  • thay đổi web.tệp cấu hình (trong thư mục gốc) Xác thực phần để thay đổi đường dẫn đăng nhập sang UserController mới và phương thức Đăng nhập
  • Thay đổi Hành động "LogOnUserControl" để trỏ đến các phương pháp UserControl mới và "Đăng nhập" và "Đăng xuất".
  • muck xung quanh với các quan điểm khác nhau mà trực tiếp gọi các bản ghi trên chức năng

Ngay bây giờ làm việc này một cách hạn chế. Tôi có thể đăng nhập và tương tác với ứng dụng NerdDinner bằng OpenID. Vì vậy, đó là mát mẻ. Tuy nhiên một số chức năng vẫn chưa hoạt động. Tiết kiệm một bữa ăn tối tạo ra không hoạt động nhưng nó không treo. Tôi sẽ phải điều tra cách di chuyển một số chức năng thành viên trong AccountController sang UserController. Tôi sẽ cập nhật bài đăng này (đề xuất và con trỏ được chào đón).

Các vấn đề liên quan