2010-07-21 30 views
14

Tôi đã sử dụng nhà cung cấp tư cách thành viên tùy chỉnh để xác thực trong tất cả các ứng dụng biểu mẫu web của tôi cho đến bây giờ. Tôi sắp bắt đầu phát triển trang web đầu tiên của mình bằng cách sử dụng MVC. Tôi tự hỏi nếu tôi nên sử dụng các nhà cung cấp thành viên được xây dựng trong đó tàu với ASP.NET MVC, hoặc nếu tôi nên tạo của riêng tôi. Trang web của tôi cần tích hợp với openid, facebook, google v.v ... để xác thực và mở truy cập api. Tôi tự hỏi làm thế nào dễ dàng nó sẽ được sử dụng được xây dựng trong một cho nhu cầu của tôi.Tôi có nên sử dụng nhà cung cấp thành viên tích hợp cho ứng dụng ASP .NET MVC không?

+1

Tôi nghĩ bạn đặt hai câu hỏi. Xây dựng nhà cung cấp thành viên của khách hàng và sử dụng thư viện như Janrain là hai thứ khác nhau. – jfar

+0

Thực ra tôi không băn khoăn về các thư viện của bên thứ 3 như Janrain ... Tôi muốn biết chủ yếu là liệu tôi có nên sử dụng hệ thống thành viên được xây dựng hay triển khai thực hiện của riêng mình (để xác thực thông thường). Xuống đường, tôi có thể xem xét tích hợp với openid, vv Nhưng tôi cần một hệ thống đăng nhập cơ bản đi ngay bây giờ mà có thể quy mô sau đó. StackOverflow, ví dụ được xây dựng bằng cách sử dụng MVC. Họ đã triển khai hệ thống đăng nhập của họ như thế nào? – Prabhu

Trả lời

25

Cá nhân, tôi ghét sử dụng ASP.NET Membership provider đó là có sẵn trong khuôn khổ lõi ... khi nó vẫn tồn tại đến một cơ sở dữ liệu SQL SERVER. Tất cả các bảng và lượt xem là quá mức cần thiết cho một trang web duy nhất. Đối với một công ty lưu trữ? .. có lẽ ... nhưng đối với tất cả các trang web doanh nghiệp tôi đã thực hiện .. nó đã được như vậy một overkill fraking và rắc rối. Đối với giao diện nhà cung cấp thực tế, vv ... nó rất tốt .. nhưng vẫn rất hardcore, vv Một quá mức cần thiết cho các trang web vừa và đơn giản, IMO.

Vì vậy, cá nhân, tôi sẽ sử dụng một số mã tùy chỉnh đơn giản để xử lý sự kiên trì thành viên cho hầu hết các trang web cơ bản vừa.

Điều này sau đó phân tách cho câu hỏi thứ hai của bạn: OpenId. Sử dụng sốcủa Andrew Arnott -> nó có tên là Kicks Serious Ass (tm). Sử dụng điều này là độc lập với CÁCH bạn lưu dữ liệu thành viên người dùng vào một kho lưu trữ. I E. nếu bạn tiếp tục và sử dụng nhà cung cấp Sql Server + ASP.NET Membership, bạn vẫn có thể (và nên sử dụng DotNetOpenAuth). Nếu bạn có một cách đơn giản, tùy chỉnh để lưu chi tiết người dùng vào cơ sở dữ liệu (đó là những gì tôi làm), bạn vẫn có thể sử dụng DotNetOpenAuth - cả hai đều độc lập với nhau.

Vì vậy, IMO, không sử dụng thành phần ASP.NET quá mức + Công cụ Sql Server nhưng một hoặc hai bảng đơn giản để lưu chi tiết người dùng của riêng bạn. Tiếp theo, bạn phải sử dụng DotNetOpenAuth cho bất kỳ công cụ OpenId nào (StackOverflow sử dụng DotNetOpenAuth để xử lý đăng nhập OpenId của họ).

Good Luck :)

(Tôi chắc chắn opnions tôi của nhà cung cấp ASP.NET Membership + Sql Server để tồn tại thông tin rằng sẽ gây ra một vài người mọt sách-cơn thịnh nộ, ở đây).

+2

+1 - Tôi thực sự thích câu trả lời của bạn vì nó thể hiện bằng cách sử dụng các công cụ chính xác cho công việc. Tôi đã thấy rất nhiều dự án mà chúng chứa các tiện ích quá phức tạp, hoàn toàn quá mức cần thiết cho những gì ứng dụng cần. Trong hầu như tất cả các trường hợp mà tôi đã trải nghiệm điều này, thường thì người sáng tạo muốn một món đồ chơi mới để chơi ... mà không thực sự nghĩ về việc liệu nó có đúng cho công việc hay không. – Dal

+1

Chỉnh sửa, vui lòng (tôi không thể). Đó là "segue" không "segway" ... trừ khi bạn đang nói về thiết bị giao thông cá nhân sẽ mãi mãi thay đổi cách chúng tôi đi làm đến năm 2000. – xanadont

+2

Chúc mừng @xanadont - bài đăng được cập nhật. –

13

Nếu bạn phải hỏi, bạn không nên viết nhà cung cấp của riêng bạn. Làm tốt an ninh là thực sự khó khăn. Làm điều đó sai là vô cùng dễ dàng.

Nhưng tin tốt là những gì bạn muốn là cực kỳ phổ biến và có các công cụ đã được kiểm tra, sẵn có đã thực hiện. Ví dụ là Janrain. Có những người khác, quá. Sử dụng một công cụ hiện có, đã được chứng minh bất cứ khi nào có thể.

+1

Ngoài ra còn có: http://code.google.com/p/dotnetopenid/ – jfar

4

Dưới đây là một tùy chọn và một tùy chọn mà tôi sử dụng thành công.

Về cơ bản, bạn có một người dùng có thể được xác thực theo nhiều cách.

Sử dụng nhà cung cấp tích hợp, mà bạn có thể chuyển đổi bất kỳ lúc nào, không loại trừ bạn khỏi việc xác thực người dùng đó theo nhiều cách.

Khi người dùng xác thực với OpenID, Facebook, v.v ... khớp với bảng phù hợp với phương thức đăng nhập và nhận dạng cụ thể đối với nhận dạng Biểu mẫu và chỉ thiết lập người dùng đã đăng nhập bằng tên thành viên kinh điển của họ.

Nếu người dùng mới xác thực trang web của bạn và không có tài khoản, chỉ cần tự động tạo một tài khoản trong nhà cung cấp thành viên. Đặt mật khẩu cho một số rác ngẫu nhiên bởi vì họ sẽ không bao giờ sử dụng nó. Hãy để họ tiếp tục liên kết nhiều loại đăng nhập với nó.

Nếu người dùng muốn sau đó cũng có thông tin đăng nhập trực tiếp, hãy sử dụng cơ chế đặt lại mật khẩu của nhà cung cấp thành viên chuẩn và cung cấp cho họ một cơ chế.

Ngắn câu chuyện: sử dụng cơ chế tích hợp sẵn ngay bây giờ. Nó không ngăn cản bạn làm những gì bạn muốn làm.

8

Hãy xem những gì đang diễn ra với NerdDinner. Họ gần đây (6 tháng trước) được tích hợp với OpenID, với Google, Yahoo là nhà cung cấp nổi bật. Họ vẫn cho phép tất cả đăng nhập 'bản địa' của họ. Dưới đây là ví dụ về trang web cho phép người dùng xác thực theo các cách khác nhau.

Nếu bạn có thể phản chiếu một số chức năng của chúng, bạn có thể cuộn trong Facebook, OpenAuth, vv Lợi ích lớn là nó đã được triển khai trong ASP.NET MVC và bạn chỉ cần vay một số việc thực hiện đó.

+1

Tuyệt vời. Hướng dẫn NerdDinner là một trong những hướng dẫn bằng văn bản tốt nhất từ ​​trước tới nay. Họ có hướng dẫn về cơ chế đăng nhập không? – Prabhu

+0

@Prabhu: Tôi chưa thấy một hướng dẫn hoặc hướng dẫn đăng nhập, nhưng tôi nghi ngờ bạn có thể liên lạc với Jon Galloway. Anh ta có thể sẽ chỉ cho bạn một số/bất kỳ tài nguyên nào làm quen với hệ thống đăng nhập mà họ có. http://twitter.com/jongalloway –

1

SimpleMembershipProvider được giới thiệu gần đây giải quyết nhiều vấn đề với tư cách thành viên asp.net cũ. Cụ thể là dễ sử dụng và kiểm soát lược đồ bảng người dùng. Đây sẽ là điểm khởi đầu cho bất kỳ ứng dụng mới nào (tính đến tháng 11/2012).

Xem liên kết dưới đây để tìm hiểu về SimpleMembershipProvider cùng với lịch sử phong nha về thành viên asp.net.

http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx

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