2008-11-11 21 views
6

Tôi đang sử dụng ASP.NET Membership và nhận thấy không có phương pháp nào trong số Roles class đến sửa đổi một vai trò (tên của nó chẳng hạn), chỉ để tạo và xóa chúng.Làm thế nào để đổi tên một Role bằng cách sử dụng Membership trong .NET?

Có thể hoặc không được hỗ trợ?

EDIT: @CheGueVerra: Có, giải pháp thay thế tốt.

Bạn có biết (để nhận thêm tín dụng :)) tại sao không thể?

+0

Tại sao nó không thể xảy ra: Không có trong lớp cơ sở [public abstract class RoleProvider: ProviderBase] Tại sao họ chọn không thực hiện nó, mà tôi không biết Tuy nhiên;) Tôi sẽ cho phép bạn đặt câu hỏi – CheGueVerra

Trả lời

19

Không có cách nào trực tiếp để thay đổi tên vai trò trong nhà cung cấp Tư cách thành viên.

Tôi sẽ nhận danh sách người dùng có vai trò bạn muốn đổi tên, sau đó xóa họ khỏi danh sách, xóa vai trò, tạo vai trò với tên mới và sau đó Thêm người dùng được tìm thấy trước đó vào vai trò tên mới.

public void RenameRoleAndUsers(string OldRoleName, string NewRoleName) 
{ 
    string[] users = Roles.GetUsersInRole(OldRoleName); 
    Roles.CreateRole(NewRoleName); 
    Roles.AddUsersToRole(users, NewRoleName); 
    Roles.RemoveUsersFromRole(users, OldRoleName); 
    Roles.DeleteRole(OldRoleName); 
} 

Điều đó sẽ thay đổi tên của vai trò cho tất cả người dùng trong vai trò.

Theo dõi: Vai trò, được sử dụng để đảm bảo người dùng chỉ đóng vai trò của mình trong hệ thống, do đó User.IsInRole (ROLE_NAME), sẽ giúp bạn thực thi chứng khoán BR áp dụng cho người dùng và vai trò của anh ấy Nếu bạn có thể thay đổi tên vai trò khi đang di chuyển, bạn sẽ xác thực rằng người dùng thực sự ở trong vai trò đó như thế nào. Đó là điều tôi hiểu, khi tôi hỏi về nó.

rtpHarry chỉnh sửa: mẫu mã giả được chuyển đổi để compilable C# phương pháp

5

Đổi tên vai trò trong mô hình thành viên ASP.NET theo chương trình sẽ là một điều xấu ™, vì tên vai trò được sử dụng trong tệp cấu hình để xác định quyền. Nếu có một cách để thay đổi tên Role (có thể thay đổi cơ sở dữ liệu), bạn sẽ ngay lập tức phá vỡ bất kỳ cấu hình bảo mật dựa trên vai trò nào trong web.config cho bất kỳ ứng dụng web nào sử dụng cơ sở dữ liệu, và sẽ không có cách nào để đảm bảo rằng một ứng dụng web có thể thay đổi cấu hình của mọi ứng dụng web bằng cách sử dụng DB thành viên đó.

+1

đúng, nhưng tôi không định sử dụng tệp cấu hình vì vai trò mới có thể được tạo bởi người dùng của tôi và họ có thể định cấu hình thông qua ứng dụng mà các trang mà vai trò mới có quyền truy cập đến. Tôi cần phải thêm một kiểm tra thời gian chạy, vì vậy hạn chế này là không cần thiết – juan

+2

Và sẽ không giống nhau xảy ra nếu bạn xóa một vai trò? – juan

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