#model-view-controller #asp.net-identity #openid-connect #azure-ad-&raph-api #asp.net-core-3.1
#model-view-controller #asp.net-identity #OpenID-connect #azure-ad-&raph-api #asp.net-core-3.1
Вопрос:
У меня есть веб-приложение Core3.1, защищенное AzureAD (OpenIdConnect), и я извлекаю большую часть необходимых мне данных пользователя из idtoken: имя пользователя, электронная почта, идентификатор сотрудника, даже группы объявлений пользователя. Мне также нужно получить некоторые дополнительные данные из базы данных, и я не уверен, как мне следует хранить эти данные в приложении, чтобы сделать их доступными везде и на все время входа пользователя в систему.
Я не хочу использовать cookie. На данный момент я использовал сеанс. Проблема в том, что срок действия этого сеанса отличается от срока действия сеанса аутентификации, поэтому мне пришлось вызвать статический метод, чтобы проверить, пусты ли переменные, и в конечном итоге выполнить запрос снова. Это работает… но это некрасиво.
Я чувствую, что должен обрабатывать вещи по-другому, но я не знаю как.
Комментарии:
1. Вы можете использовать .net core 3.1 в кэше памяти
2. Разве кэш памяти не является общим для всех пользователей?!
3. кэш памяти будет обслуживаться для каждого пользователя, но доступ к вашему user_object возможен только по ключу (например, идентификатору пользователя, токену, электронной почте, имени пользователя и т.д.) Только для этого пользователя
4. Извините, я вас не понимаю. У вас есть пример? Я не могу найти ничего связанного.
5. Вы можете проверить это learn.microsoft.com/en-us/aspnet/core/performance/cachin& /…
Ответ №1:
Решение на основе утверждений может работать лучше всего здесь, где вы:
- Определите объект утверждений в вашем API
- Заполните его, когда ваш API впервые получит токен доступа
- Кэшируйте объект claims для последующих запросов с тем же токеном доступа
- Этот кэш всегда будет синхронизирован с сеансом пользователя
Смотрите мой пост в блоге для получения дополнительной информации о шаблоне. И вот некоторый код реализации.
Комментарии:
1. Я прочитал статью, но она не кажется мне уместной.
2. Нет проблем — ключевые моменты заключаются в том, что часто бывает трудно поместить нужные вам утверждения в токены, а сопоставление токена с собственными пользовательскими данными вашего API может быть затруднено. Возможно, вы сможете предложить альтернативное решение, отвечающее тем же целям..