Có hai bảng: aspnet_users và aspnet_membership. Bất cứ ai có thể xây dựng trên lý do tại sao họ không sử dụng một bảng duy nhất cho điều này?Tại sao thông tin Người dùng được lưu trữ trong hai bảng khác nhau trong Nhà cung cấp Thành viên mặc định của ASP.NET?
Trả lời
Bảng thành viên chứa thông tin liên quan đến giao diện API MembershipProvider API. Bảng người dùng lưu trữ tên người dùng và id người dùng, được tham chiếu từ nhiều nhà cung cấp.
- Người dùng
- Membership (MembershipProvider)
- hồ sơ (ProfileProvider)
- Vai trò (RoleManager)
- vv
Hệ thống aspnetdb là rất mô-đun và mỗi mảnh có thể là cu stomized thông qua các nhà cung cấp khác nhau. Các bảng cần được tách ra để mỗi giao diện có thể được viết lại, chuyển hướng, v.v.
Một số nhà cung cấp khác trong ASP.NET (ngoài nhà cung cấp tư cách thành viên) cũng lưu trữ thông tin người dùng cụ thể. ví dụ. Hồ sơ.
Thông tin thêm về điều này:
Một số nhà cung cấp ASP.NET lưu trữ/sử dụng thông tin trong ngữ cảnh tên người dùng. Một trong số này là MembershipProvider, cung cấp cửa hàng xác thực và tập hợp dịch vụ.
Khác là ProfileProvider, cho phép dữ liệu người dùng cụ thể được tổ chức với từng người dùng.
Bạn vẫn có thể sử dụng ProfileProvider bất kể bạn có chọn sử dụng MembershipProvider hay không. Vì ProfileProvider phải lưu trữ dữ liệu dựa trên tên người dùng (ví dụ như được hiển thị bởi thuộc tính Context.User.Identity.Name
), nó sẽ tiếp tục và thêm bản ghi người dùng vào aspnet_Users.
Hy vọng điều này sẽ làm rõ lý do tách biệt.
Thành thật mà nói, điều đó cũng không hợp lý với tôi. Có vẻ như bảng aspnet_Membership được thiết lập cho người dùng/thông tin cấp ứng dụng nhà nhưng UserID là một PK. Rất lạ. Có lẽ đã tự thiết lập cho một tình huống mà bạn có nhiều ứng dụng cho mỗi người dùng trong một số bản phát hành sau này.
Dave đề cập rằng có các bảng khác như aspnet_Profile chứa thông tin người dùng cụ thể. Có thể là những người dùng ASP.NET 2.0 chỉ đang cố tách riêng các nhóm khác nhau thành các phần dễ tiêu hóa hơn.
Tôi biết đó chỉ là một loạt phỏng đoán. Hy vọng rằng ai đó có một số kiến thức thực tế sẽ kêu vang.
tôi thấy explination này từ page này:
Các cửa hàng SqlMembershipProvider thông tin tài khoản người dùng trong hai bảng liên quan:
aspnet_Users - có một bản ghi cho mỗi tài khoản người dùng, lưu trữ các yếu tố cần thiết để trần. Cột UserId xác định duy nhất mỗi người dùng trong hệ thống và được lưu trữ dưới dạng một bộ định danh duy nhất (GUID).
aspnet_Membership - có cột UserId ràng buộc mỗi bản ghi trở lại một bản ghi cụ thể trong aspnet_Users. Bảng aspnet_Membership lưu trữ dữ liệu cốt lõi được liên kết với mọi tài khoản người dùng: Email, Mật khẩu, câu hỏi bảo mật và câu trả lời, v.v.
aspnet_users
chứa người dùng bạn tạo (FORMS xác thực) ... LƯU Ý Khi xác thực của bạn được đặt thành WINDOWS, người dùng là người dùng WINDOWS, ví dụ: domain \ firstname.lastname
Các aspnet_membership
chứa thông tin sở thích thành viên sử dụng trong những thứ như WebPart
s và thiết lập người dùng
bảng aspnet_Users chứa thông tin cho tất cả người dùng: vô danh và không nặc danh. Bảng aspnet_membership chứa thông tin về người dùng đăng ký (không có ẩn danh).
- 1. Nhà cung cấp thành viên nào triển khai người dùng được lưu trữ trong web.config?
- 2. Lưu thay đổi email trong Nhà cung cấp thành viên mặc định trong ASP.NET MVC
- 3. Nhà cung cấp tư cách thành viên ASP.NET với EF
- 4. Sử dụng Nhà cung cấp thành viên ASP.NET SQL, làm cách nào để lưu trữ dữ liệu của riêng từng người dùng của tôi?
- 5. Nhà cung cấp OpenID cung cấp thông tin cá nhân nào cho người tiêu dùng?
- 6. Nhà cung cấp thành viên ASP.NET - Đăng nhập một lần
- 7. Kịch bản để tạo một nhà cung cấp thành viên ASP.NET Người dùng
- 8. Sử dụng tư cách thành viên asp.net với sqlite hoặc nhà cung cấp khác?
- 9. Kiểm tra nhà cung cấp thành viên không có ASP.NET
- 10. Nhà cung cấp thành viên và tuân thủ HIPAA
- 11. Sử dụng nhà cung cấp thành viên ASP.NET với cơ sở dữ liệu người dùng hiện có
- 12. Khóa người dùng trong ASP .Net Nhà cung cấp tư cách thành viên tùy chỉnh
- 13. Nhà cung cấp thành viên Active Directory và Nhà cung cấp hồ sơ SQL
- 14. Thuật toán băm khác nhau cho nhà cung cấp thành viên ASP.NET?
- 15. Mẫu mặc định MVC3 lưu trữ thông tin tài khoản người dùng ở đâu?
- 16. cung cấp cho người dùng openid thông tin bổ sung
- 17. Nhà cung cấp thành viên asp.net tùy chỉnh
- 18. Nhà cung cấp thành viên/vai trò ASP.NET cho Postgres?
- 19. WCF, Nhà cung cấp dịch vụ thành viên ASP.NET và dịch vụ xác thực
- 20. Nhà cung cấp thành viên ASP.NET có email xác nhận
- 21. Mạo danh người dùng thành viên trong ASP.NET
- 22. Tích hợp Facebook Connect với trang web sử dụng Nhà cung cấp thành viên ASP.NET
- 23. Vai trò người dùng - tại sao không lưu trữ trong phiên?
- 24. Cung cấp lưu trữ ZIP được tạo động trong Django
- 25. "Nhớ thông tin đăng nhập của tôi" không thành công khi sử dụng nhà cung cấp người dùng tùy chỉnh, thực thể người dùng, v.v.
- 26. Cách điền tiểu sử người dùng với thông tin nhà cung cấp django-allauth?
- 27. Khi sử dụng thành viên ASP.Net cộng với một bảng bổ sung để lưu trữ thông tin người dùng, tôi có nên liên kết các bảng khác với aspnet_Users hoặc Bảng của riêng tôi không?
- 28. Làm cách nào để cung cấp phản hồi "thành công" cho người dùng trong ASP.NET MVC?
- 29. Người dùng dùng phiên của người dùng khác khi phiên được lưu trữ trong memcached (Rails)
- 30. Ký tự tên người dùng hợp lệ bằng cách sử dụng nhà cung cấp SQL cho thành viên ASP.NET
Tôi đã hy vọng một ai đó có đầu mối sẽ kêu vang; o) – wcm
Cảm ơn :) Mô đun thực sự thực sự tốt đẹp, tôi có một dự án triển khai một MembershipProvider tùy chỉnh và một RoleManager tùy chỉnh và nó khá dễ dàng. –
Ahem. Bảng aspnet_Users được tái sử dụng trong một số nhà cung cấp. Bảng aspnet_Membership thực sự chỉ để sử dụng với các nhà cung cấp thành viên như tôi đã đề cập. –