Добрый вечер!
Существует сущность "Роль" в БД Roles (RoleId, RoleName). Есть сущность пользователь User (UserId, UserName, ...), и есть связь UsersRoles (UserId, RoleId).
Соответственно в приложении ASP.NET MVC есть собственный контроллер BaseController: Controller, в котором реализована следующее переопределение стандартного IPrincipal на свой IAppPrincipal:
protected virtual new AppUserPrincipal User
{
get { return new AppUserPrincipal(base.User); }
}
Чтобы потом в любом котроллере, например HomeController: BaseController можно было обратиться к объекту "Текущий пользователь":
var userCode = User.Code;
ViewBag.UserName = User.Firstname;
bool access = User.IsInRoles("Admin, SuperAdmin");
Вопрос - Где заполнять роли пользователя?
1 - Один раз во время логина, добавляя роли через Claims? Но тогда, если список ролей пользователя во время работы его с приложением изменится, пользователь по прежнему не будет обладать этими ролями по факту до того момента, как он не залогиниться по новой.
2 - Каждый раз при новом запросе к странице, делать запрос к БД и брать роли пользователя. Считается ли это нормальной практикой?
Очень нужна консультация в этих вопросах!
Заранее благодарю за любую помощь!