Я пытаюсь создать схему авторизации для моего приложения ASP.NET MVC, где Enum используется для установки разрешений. Например:Битфилд с тремя государствами ...?
[Flags]
enum Permissions
{
ReadAppointments = 1,
WriteAppointments = 2 | ReadAppointments,
ReadPatients = 4,
WritePatients = 8 | ReadPatients,
ReadInvoices = 16,
WriteInvoices = 32 | ReadInvoices
...
}
Но мне это не очень нравится, потому что на самом деле не ясно, что Write всегда включает Read.
Затем я понял, что требование состоит в том, что пользователь может иметь НЕТ доступ к, например, Назначениям.
По сути, я бы хотел «битполе» с тремя состояниями: нет, только для чтения, полным (чтение/запись). Я бы хотел использовать бит-бит enum, так как его легко хранить в БД (как int). Также очень легко увидеть, установлено ли разрешение.
Кто-нибудь знает, как это можно было бы легко выполнить с помощью Enum ... или я пойду в совершенно неправильном направлении?
EDIT: Я действительно стараюсь избегать хранения определений разрешений в БД, так как я действительно хочу, чтобы вещи были изменчивыми, не изменяя многое на конце БД. Было бы очень приятно узнать, как это сделает крупномасштабное приложение.
Держите его в 4 штатах на низком уровне: Нет, х, но не Y, Y бот не X, X и Y. Кроме того, вместо 1,2, 4,8,16 использовать 1 сдвинутый на 0 бит, 1 сдвинут на 1 бит, 1 сдвинут на 2 бита и т. Д. –