Làm cách nào để người dùng trong vai trò "khách hàng" được truy lục từ một MembershipUserCollection?Làm cách nào để có được người dùng dựa trên vai trò?
Trả lời
Roles.GetUsersInRole
trả về một string[]
tên người dùng trong một vai trò. Nếu bạn thực sự muốn MembershipUser
đối tượng, bạn có thể sử dụng:
var list = Roles.GetUsersInRole("roleName").Select(Membership.GetUser).ToList()
Tất nhiên, đây là hiệu suất chuyên sâu như nó chạm vào cơ sở dữ liệu một lần cho mỗi người dùng.
Nếu bạn sẵn sàng từ bỏ sự độc lập của nhà cung cấp, bạn có thể truy vấn trực tiếp cơ sở dữ liệu bên dưới và thực hiện kết nối trên máy chủ cơ sở dữ liệu để nhận tất cả người dùng trong một vai trò cụ thể.
Sử dụng lớp RoleProvider http://msdn.microsoft.com/en-us/library/system.web.security.roleprovider.aspx
nó có một phương pháp FindUsersInRole
Xin lưu ý FindUsersInRole chấp nhận hai tham số thứ hai trong số đó là một chuỗi mỗi tên người dùng nên chứa (tức là THÍCH) để được kết hợp. Nó là một phương thức ngu ngốc không thể được sử dụng để tìm người dùng _all_ trong một vai trò bất kể tên người dùng của họ. – dpant
@dpant RoleProvider là một lớp trừu tượng! Ví dụ trên liên kết trong câu trả lời của tôi chính xác là "một ví dụ" - bạn xác định phương thức hoạt động như thế nào và nó trả về bằng cách mở rộng lớp RoleProvider và hoàn toàn các phương thức trừu tượng như vậy nếu bạn muốn bỏ qua tham số thứ hai và chỉ cần bỏ qua trong Null bạn có thể. Tôi đề nghị bạn dành thời gian để hiểu những điều này hoạt động như thế nào trước khi đăng các bình luận vô nghĩa. – Rob
Đối với ràng buộc vào một ListBox
bạn có thể sử dụng:
ListBox1.DataSource = System.Web.Security.Roles.GetUsersInRole("Role_Name");
ListBox1.DataBind();
bỏ lỡ trong web.config –
Dorathoto