Tôi muốn thêm Ủy quyền vào bộ điều khiển, cho nhiều Vai trò cùng một lúc.
Thông thường nó sẽ trông như thế này:
[Authorize(Roles = "RoleA,RoleB,RoleC")]
public async Task<ActionResult> Index()
{
}
Nhưng tôi đã lưu trữ các Vai trò của mình trong bảng điều khiển, vì chúng có thể thay đổi hoặc được mở rộng vào một thời điểm nào đó.
public const RoleA = "RoleA";
public const RoleB = "RoleB";
public const RoleC = "RoleC";
Tôi không thể làm điều này, vì chuỗi phải được biết tại thời điểm biên dịch:
[Authorize(Roles = string.join(",",RoleA,RoleB,RoleC)]
public async Task<ActionResult> Index()
{
}
Có cách nào để vượt qua vấn đề?
TÔI CÓ THỂ viết một const chỉ đơn giản chứa "RoleA, RoleB, RoleC" - nhưng tôi không thích chuỗi ma thuật và đây là một chuỗi ma thuật. Thay đổi tên của một Vai trò và quên thay đổi chuỗi kết hợp sẽ là một thảm họa.
Tôi đang sử dụng MVC5. ASP.NET Identity và Role được biết đến tại thời điểm biên dịch.