У меня есть веб-API со многими контроллерами. С этими контроллерами я определил множество ролей и украсил контроллер/функции. Для доступа к API я использую jwt.
Я попытался записать свои роли в jwt как ключевое значение. Это отлично работает, но если я установлю много ролей в своем jwt, токен станет очень большим. Я искал в Интернете и нашел несколько решений, таких как промежуточное программное обеспечение, где я получаю роли для пользователя каждый раз, когда инициируется запрос. Второе решение, которое я нашел, состояло в том, чтобы создать перечисление для ролей и не сохранять имена в jwt, а числа -> jwt становятся меньше. Моя проблема в том, что это не похоже на правильный путь. Я использую ядро .net и структуру идентификации. Какова наилучшая практика для этой проблемы?





Не существует «лучшей практики». Хранить роли в токенах JWT — это вполне нормально. Но токен с заявлениями о роли имеет разрешение на доступ к вашему веб-сайту до истечения срока его действия, если кто-то обновит роль пользователя, это не повлияет на токен, если у вас нет логики отзыва токена. Поиск ролей/разрешений в db поможет системе повысить безопасность, поскольку она всегда будет получать самую новую роль этого пользователя. Но это повлияет на производительность сервера, если у вас большое приложение, в зависимости от количества запросов, которые вы отправляете.
В любом месте, если возможно, создайте/управляйте своими ролями, чтобы у пользователя не было много ролей.
Спасибо за Ваш ответ. Знаете ли вы какой-либо источник того, как: «разрабатывать/управлять ролями и избегать большого количества ролей»? Это было бы прекрасно. На данный момент я реализую решение для хранения ролей в моем токене в виде чисел. Не мой любимый.