Đó là một câu hỏi hay và tôi đã gặp khó khăn. Tôi nghĩ có ba cách tiếp cận cơ bản;
Sử dụng một nhà cung cấp hồ sơ - điều này làm cho nó dễ dàng để thêm các thuộc tính nhưng cồng kềnh để làm những việc như tạo ra một bảng của người dùng, đặc biệt là nếu bạn cần phải áp dụng các bộ lọc/tìm kiếm. API chỉ không cắt nó.
Thêm bảng mới (hoặc mở rộng bảng hiện có) và sau đó tham gia. Sau đó, bạn sẽ cần phải viết các phương thức của riêng mình để lấy lại dữ liệu tùy chỉnh.
Viết nhà cung cấp tư cách thành viên của riêng bạn mở rộng lớp MembershipProvider.
Đối với dự án cuối cùng của tôi, tôi đã sử dụng cách tiếp cận thứ hai - Tôi đã viết một nhà cung cấp SQL rất hạn chế chỉ cần tạo người dùng, xác thực và thay đổi mật khẩu. Đối với phần còn lại của các phương pháp ảo tôi chỉ cần ném một NotImplementedException
.
Sau đó, tôi đã thêm một lớp mới bổ sung thêm các thuộc tính bổ sung mà tôi cần và tạo nó để nó có thể được khởi tạo bằng cách chuyển vào tiêu chuẩn MembershipUser
. Một cái gì đó như thế này:
public static CustomMember GetMember(MembershipUser user)
{
// Get your custom member
}
Bằng cách đó bạn có thể sử dụng MembershipUser tiêu chuẩn cho hầu hết mọi thứ nhưng nếu bạn cần biết thêm chi tiết về người dùng hiện tại bạn làm công cụ như thế này:
MembershipUser user = Membership.GetUser();
CustomMember member = CustomMember.GetMember(user);
Tôi muốn được quan tâm để xem cách tiếp cận của những người khác là gì, mặc dù.
Nguồn
2009-07-29 08:58:11
Cảm ơn bạn đã trả lời. Tôi thích cách tiếp cận của bạn. Tôi cũng tò mò muốn biết những gì người khác nghĩ. – Dkong
Tôi không chắc chắn làm thế nào bạn 'trộn và kết hợp' nhà cung cấp thành viên, chắc chắn CustomMember.GetMember() sẽ kéo dữ liệu ra khỏi một số bảng tùy chỉnh trong khi Membership.GetUser() sẽ hành động trên bảng asp_users mặc định? – greenimpala
Xin chào, cảm ơn lời khuyên. Nhưng có bài viết nào hay các phương pháp hay nhất về lựa chọn phương pháp này? Tôi rất biết ơn các liên kết đó. –