Многие статьи онлайн о доступе на основе ролей говорят о применении чего-то подобного для обеспечения доступа на основе ролей к контроллеру или действию
[Authorize(Roles = "Admin, Manager")]
public class SomeController : Controller
{
}
Все это хорошо, но теперь, если мне нужно реализовать свой собственный пользовательский доступ на основе ролей, в котором у меня есть роли в таблице [RoleMaster] и роли, назначенные пользователю из таблицы [User] в другой таблице с именем [UserRoles ]. В моем коде у меня будет пользовательский объект в сеансе, в котором теперь будет список ролей
public class RegisteredUsers
{
//... other user properties
public List<UserRole> Roles { get; set; }
}
public class UserRole
{
public string RoleID { get; set; }
public string RoleName { get; set; }
//... other properties
}
Теперь, как мне проверить свойство UserRole.RoleName в списке ролей в объекте RegisteredUsers как совпадающее с любым из значений, которые я присвоил атрибуту Authorize, используя: [Authorize (Roles = "Admin, Manager")] , В некоторых случаях, если роли имеют администратора или менеджера, они должны получить доступ. В некоторых случаях я хочу, чтобы у них были права администратора и администратора, чтобы получить доступ.
Кроме того, в будущем, если в систему будут добавлены новые роли, мне нужно будет пересобрать и повторно развернуть мое приложение со всеми переделанными атрибутами Authorize?
Мне не удалось найти ни одного четкого примера, реализующего то же самое, или, возможно, я не ищу правильно. Пожалуйста, помогите мне любым возможным способом. Спасибо за ваше время ...