ASP.NET MVC. Использование [Authorize(Roles = "Роль"), имея старый string Roles в проекте

В проекте до меня использовалась модель User:

{
    public string Name { get; set; }
    public Role Role { get; set; }
}

Role:

{
    public string Title { get; set; }
}

На ней уже много что написано, но сейчас я банально хз как это применить к авторизации, можно сказать что это сделано под админку(года так с 2013-2014). Принцип примерно такой(Зашел под админом - держи доступ в админку. Не админ? - Не пущу)

if(UserCurrentRole == "Администратор")
{
   действия
} 

Сейчас разделяю авторизацию и добавляю виды пользователей и хочу из разграничивать через [Authorize(Role = "Продавец"] на контроллере(условно)

Можно ли как то применить эту модель Role на [Authorize]?


Ответы (1 шт):

Автор решения: A K

Вы можете вписывать в атрибут Authorize(Role любую текстовую строку, какая вам нравится. Хотите продавец - ок, пусть будет продавец.

Главное, не забудьте потом пройти в таблицу базы данных и вставить эту строку в таблицу ролей (штатно её название dbo.AspNetRoles) и указать в таблице dbo.AspNetUserRoles какие пользователи входят в эту роль:

введите сюда описание изображения

При этом НА ДАННОМ ЭТАПЕ какая разница какой у вас класс используется - типовой класс из библиотеки identity или ваш кастомный? Никакой. Админка работала все эти годы, значит, как-то была настроена: просто добавьте новую роль продавец в таблицу БД, навесьте [Authorize(Role = "Продавец"] на любой тестовый экшн/контроллер и убедитесь сами, что видно только пользователям из нужных групп.

→ Ссылка