Я знаком с тем, как использовать заголовок Authorize в сценариях с одиночной и множественной авторизацией, но, учитывая следующие предполагаемые изменения в базе кода, я не могу понять, как реализовать это, загромождая код класса дополнительными свойствами, которые являются множественными полномочиями. .
У меня есть следующий класс AuthorizationLevel
public class AuthorizationLevel
{
public static class Roles
{
public const string Admin = "Admin";
public const string Developer = "DevOps";
public const string OfficeManager = "OfficeManager";
public const string Customer = "Customer";
public const string Distributor = "Distributor";
public const string Registered = "Basic";
}
}
В контроллере, если бы у меня не было этого класса, я бы сделал что-то вроде
[Authorize(Roles = "Admins, Customers")]
Но яПредпочитаю иметь класс, определяющий все роли, чтобы я мог сделать что-то вроде
[Authorize(Roles = AuthorizationLevel.Roles.Admin, AuthorizationLevel.Roles.Customer)]
Проблема в том, что в этом сценарии параметр, ожидаемый после запятой, является политикой, поэтому я попробовал это.
[Authorize(Roles = $"{AuthorizationLevel.Roles.Admin}, {AuthorizationLevel.Roles.Customer}")]
Что не понравилось редактору и должно было сработать, потому что этот код должен создавать строку с разделителями-запятыми.
Как я могу (или не могу) использовать этот класс в этом сценариивместо того, чтобы создавать дополнительные свойства в классе, которые объединяют несколько уровней, например
public const string AdminCust = "Admin, Customer";