2009-03-31 26 views
19

Có bất kỳ lựa chọn thay thế nào cho các thành viên .net không?Các giải pháp thay thế cho .Net Membership

Tôi thấy nó khá hạn chế;

  • Không thể thay đổi Tên người dùng, dễ dàng. Bạn phải tạo người dùng mới và sao chép các trường, nhưng sau đó bạn mất khóa chính HOẶC bạn phải tự mình chỉnh sửa bảng người dùng.

  • Các trường hồ sơ bổ sung được lưu trữ cùng nhau dưới dạng một đốm màu.

Trả lời

13

Thành viên ASP.Net sử dụng mô hình nhà cung cấp. Điều đó có nghĩa là bạn hoàn toàn miễn phí để triển khai nhà cung cấp tư cách thành viên của riêng mình hoặc thậm chí kế thừa và mở rộng nhà cung cấp hiện tại, miễn là bạn theo dõi provider contract.

Thêm một câu hỏi để hỏi về các lựa chọn thay thế hiện có thay vì cố tự xây dựng một thứ gì đó mới mẻ.

0

Theo như thay đổi tên người dùng, có thể dễ dàng thực hiện bằng cách sử dụng phương thức CreateNewUser() và điền vào các trường thích hợp dựa trên Người dùng hiện tại, sau đó xóa người dùng hiện tại.

Các trường hồ sơ không phải là một phần của mô hình Nhà cung cấp thành viên .NET, nhưng là một phần của Nhà cung cấp hồ sơ. Đây là một chủ đề được tranh luận cao và đối với hầu hết các máy sản xuất, cách chính xác để thực hiện là giải quyết một giải pháp nhà cung cấp hồ sơ tốt hơn, chẳng hạn như Table Profile Provider, lưu trữ các trường hồ sơ như bạn mong đợi chứ không phải là blob bộ nhớ . Ngoài ra, bạn có thể dễ dàng cuộn nhà cung cấp tiểu sử của riêng mình, xem instructions here.

Chắc chắn có các lựa chọn thay thế thành viên .NET, nhưng hầu hết là lỗi hoặc có một tính năng nhỏ. Nó thực sự hút để phát triển trên đầu trang của một trong hai tháng và sau đó nhận ra nó sẽ không hỗ trợ tất cả các chức năng bạn cần. .NET Membership là một giải pháp đã được chứng minh và đó là lý do tại sao nó được sử dụng thường xuyên.

+2

Nếu bạn tạo người dùng mới nó cũng sẽ tạo ID mới cho nó, phải không? Không tốt nếu người dùng đã được tham chiếu bởi các bảng khác. – XOR

+0

Không, nhưng khá đơn giản để sửa chữa trong phương pháp của bạn cho "thay đổi" tên người dùng. – JoshJordan

0

Đối với Cấu hình, có một số alternatives out there. Cả hai sử dụng một bảng hoặc cho phép bạn gọi một thủ tục được lưu trữ. Tất nhiên bạn cũng có thể thực hiện của riêng bạn. Cá nhân tôi đã mệt mỏi khi sử dụng Nhà cung cấp hồ sơ và thấy rằng việc xử lý hồ sơ trong mã của tôi dễ dàng hơn để kiểm soát và chứa.

Đối với các vấn đề khác, bạn cũng có thể triển khai nhà cung cấp của riêng mình. Microsoft đã phát hành mã nguồn cho các Nhà cung cấp SQL để nó có thể cung cấp cho bạn một điểm khởi đầu.

+0

Bạn có thể giải thích lý do tại sao bạn không sử dụng mô hình nhà cung cấp tiểu sử không? – kseen

2

Khi mô hình thành viên ASP.NET được xây dựng xung quanh Nhà cung cấp, có một số lựa chọn thay thế có sẵn.

Theo mặc định, người dùng có một ProviderUserKey, là GUID, và đó là khóa chính của cơ sở dữ liệu, vì vậy bạn có thể viết một cái gì đó để thay đổi tên người dùng của họ nếu bạn muốn.

Về mặt cấu hình, có, đốm màu mặc định khá khó chịu. Bạn có thể xem SQL Table Profile Provider để ánh xạ các hồ sơ trên các bảng hoặc khá nhanh chóng roll your own.

+0

@Dan - Theo UserID, tôi đã đề cập đến các PK trong bảng cơ sở dữ liệu aspnet_Membership và aspnet_users, được gọi là UserId –

8

Tôi sẽ tiếp tục và liệt kê lựa chọn thay thế của mình tại đây. Tôi đã cuộn thư viện xác thực của riêng mình và tôi nghĩ nó đủ tuyệt vời để được phát hành công khai ... Vì vậy, tôi đã làm. Nó được thiết kế để tránh xa con đường của bạn và tổng thể, nó khá tối giản. Tôi không cung cấp nhiều điều khiển của người dùng hộp, nhưng trên hầu hết các trang web tôi đã nhìn thấy các điều khiển người dùng được tích hợp này sẽ không bao giờ được sử dụng.Vì vậy, thay vì cố gắng tạo các điều khiển người dùng linh hoạt hơn, tôi đã quyết định thay thế để làm cho nó trở nên đơn giản để tạo các điều khiển đăng nhập của riêng bạn và như vậy.

Dự án được gọi là Nhanh, An toàn và Xác thực ngắn gọn hoặc viết tắt là FSCAuth. Nó được cấp phép BSD. Bạn có thể tải xuống tại số Binpress hoặc tại Bitbucket

Mô hình "UserStore" linh hoạt (tương đương với nhà cung cấp của Biểu mẫu) cho phép bạn tạo cơ sở dữ liệu theo ý bạn muốn. Nó có thể hỗ trợ các tệp văn bản thuần túy, XML, MongoDB, Sql Server và bất kỳ nơi nào ở giữa.

Dưới đây là một danh sách những thứ mà tôi nghĩ rằng nó đặc biệt vượt trội so với hình thức xác thực:

  • Stateless Hệ thống xác thực. Không có yêu cầu để theo dõi các phiên người dùng trong cơ sở dữ liệu hoặc bộ nhớ. Điều này làm cho nó tầm thường để mở rộng lên nhiều máy chủ yêu cầu ít (nếu có) thay đổi mã xác thực của bạn
  • Sử dụng bất kỳ thứ gì làm ID duy nhất cho mỗi người dùng. Đúng vậy, không còn GUID nào nữa! Mọi thứ phù hợp trong chuỗi là trò chơi công bằng
  • Xác thực cơ bản HTTP được bật. Bạn có thể bật Xác thực cơ bản ngay trên các trang bạn muốn (hoặc trên toàn cầu) và bạn có thể thực hiện các cuộc gọi giống như đang sử dụng cookie dựa trên điển hình xác thực
  • Khó thực hiện không an toàn. Bởi vì nó hoạt động như thế nào và tôi để ít mã cốt lõi nhất có thể cho người dùng cuối để thực sự thực hiện xác thực, nó cực kỳ an toàn và sẽ vẫn như vậy trừ khi bạn thực sự cố gắng phá vỡ nó. Tôi xử lý cookie, Xác thực cơ bản HTTP và tất cả băm. Bạn chỉ cần cung cấp cho FSCAuth một cơ sở dữ liệu để đặt nó vào.
  • BCrypt hỗ trợ cho băm là tầm thường. How to do it.. Trong hình thức xác thực nó là almost not possible
  • Tôi thích nó :)

Tất nhiên nó cũng thiếu, và phải công bằng tôi sẽ bao gồm một vài điều mà đang thiếu

  • xác thực các tập tin tĩnh trong IIS 6 là không thể (chưa)
  • Không có phòng chống bạo lực (chưa). Điều này có nghĩa là bạn sẽ cần đảm bảo rằng cùng một người không cố gắng truy cập trang đăng nhập của bạn 200 lần trong 2 giây.
  • Nó không được xây dựng vào ASP.Net
  • Không Windows hoặc chứng thực hộ chiếu (với không có kế hoạch bao giờ thêm)
Các vấn đề liên quan