У меня есть перечень действий. Действия разделены на две роли пользователя. Пользователи делают запросы к приложению через веб-API. Как можно ограничить значения, принимаемые действием веб-API, в зависимости от роли пользователя?
На данный момент у меня две роли, и я использую два перечисления и два метода Web API. Когда значение передается в хранилище базы данных, оно приводится к целому числу. Это не идеально - я бы предпочел использовать объединение перечислений в интерфейсе репозитория.
Итак ...
Администраторы могут запросить выполнение действий из Enum1, а не администраторы могут сделать то же самое для действий в Enum2. Но метод репозитория, который выполняет работу, может работать с целочисленными значениями из обоих, потому что авторизация была обработана.
Наследование перечислений исправило бы это, если бы перечисления были наследуемыми.
enum EnumAdmin { Action1 = 1, Action2 = 2 }
enum EnumNotAdmin { Action3 = 3, Action4 = 4 }
void DoAction(int action);
[Authorize(Roles = "Admin")]
public IActionResult AdminMethod(EnumAdmin param)
{
repos.DoAction((int) param);
}
[Authorize(Roles = "NotAdmin")]
public IActionResult AdminMethod(EnumNotAdmin param)
{
repos.DoAction((int) param);
}
РЕДАКТИРОВАТЬ: Ну, здесь нечего видеть, так как моя схема все равно не работает.
Возможность назначить недопустимое значение Enum с помощью отражения