Причина, по которой мне нужна система на основе ролей:
- Ограничение доступа к страницам.
- Ограничение доступа к определенным функциям на страницах.
- Проверка / проверкавнутри сервисного слоя.
Итак, я думаю, я могу просто создать enum и, если мне нужна новая роль, просто добавить ее в код приложения (приложение все равно изменится, поэтому требуется перекомпиляция).
Так что сейчас у меня есть
public class User
{
/* .. */
public virtual ICollection<UserRole> Roles {get; set;}
}
public enum UserRoleType
{
Administrator,
User
}
public class UserRole
{
public int UserRoleId { get; set; }
public int RoleTypeValue { get; set; }
public UserRoleType RoleType
{
get { return (UserRoleType)RoleTypeValue; }
set { RoleTypeValue = (int)value; }
}
public virtual User User { get; set; }
}
Это 1 ко многим.Плюсы, которые я вижу в этом, состоят в том, что вместо много-много есть 1-много, а объединений меньше.Приложение уже знает, на чем основана роль, на что int
разрешает перечисление.
Есть ли какие-либо недостатки в том, как я это делаю?Есть ли что-то, что вы встретили в своем опыте, которое потребовало бы от меня сохранения фактических значений в базе данных?