У меня есть система, в которой все страницы (представления) и все элементы управления (кнопки, ссылки, меню и т.д.) имеют к ним роли безопасности.
Итак, у меня есть интерфейс администратора, где все страницы и элементы управления зарегистрированы. И каждый пользователь имеет набор индивидуальных разрешений.
Итак, например:
У меня есть View EditCar, с 3 кнопками: "Новый", "Удалить" и "Назад".
Таким образом, пользователь X имеет разрешение на просмотр View EditCar, и только кнопка "Назад"
Итак, каждое новое представление должно быть зарегистрировано и ассоциироваться с пользователями. Ролей нет, поскольку каждый пользователь настраивается на 100%.
Итак, у меня есть FilterAttribute:
public class CustomAuthorize : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAuthenticated)
{
var userPermissions = repository.GetAll().Where(x => x.Name.Equals(User.Identity.Name);
// if (!userPermissions.Pages.Any(x => x.NamePage.Contains(???))))
}
else
{
filterContext.Result = new HttpUnauthorizedResult();
}
}
}
Итак, мой вопрос: - Что следует хранить в базе данных для определения каждого вида (действия)? Может быть, 3 значения? Area-Controller-Action?
Это лучший вариант? Любая другая идея об этом решении?
Спасибо