Мне не нравятся встроенные провайдеры членства. Решил покататься самостоятельно. Я пытаюсь придумать хороший способ выполнения авторизации на уровне действий. Вот требования, которые я пытаюсь выполнить :
ReadWrite
имеет разрешение на чтение
. Точно так же, как or'ing с enum. ПРИМЕЧАНИЕ: Некоторые думают, что этот набор требований слишком широк (см. Комментарии). Я так не думаю, я думаю, что они довольно простые.
Самым большим препятствием является использование атрибутов. Могут быть только «постоянные выражения, выражения типа или выражение создания массива с типом параметра атрибута».
Я думал о том, чтобы сделать что-то подобное, чтобы операции имели статический доступ. Внутри атрибута он "преобразовал бы" int в фактическое Разрешение или что-то в этом роде ...:
public static class Operations
{
public static class SectionA
{
public const int Read = 1;
public const int ReadWrite = 2;
}
public static class SectionB
{
// ... and so on...
}
}
Но это действительно ограничивает композицию. Я' Я уверен, что вы думаете: "Почему бы вам не пойти по маршруту enum?" ну, я хочу спланировать, что что-то изменится, и не хочу ограничиваться 32 (int) или 64 (long) операциями, и мне придется потом произвести массовую перезапись (также в базе данных, которая просто уродлива).
Кроме того, если есть лучшая альтернатива, чем атрибуты для действий / контроллеров, то я все слышу для предложений.
РЕДАКТИРОВАТЬ: Также из этого сообщения я читал о BitArray
] учебный класс. Это кажется некрасивым , особенно с произвольным хранением в базе данных.