2017-02-19 3 views
0

Я разрабатываю приложение, которое будет поддерживать несколько отделов в нашей организации, и хотите, чтобы определить, какие данные доступны AD групп пользователь находится в.IsUserInRole() против Session [] в .Net Web Application

Мои вопрос заключается в том, является ли более экономичным ресурс (пропускная способность, временные интервалы и т. д.) использовать вызов IsUserInRole() в каждой точке принятия решения или загружать несколько переменных Session[] при логине пользователя, которые являются логическими и используют их во всем моем коде?

Мысли?

ответ

0

Я бы избежал сессий. Они делают масштабирование приложения более сложным, так как вам нужен централизованный магазин (база данных или Redis), в то время как он будет удален при каждом отдельном запросе. Это замедляет процесс, так как вам нужно дождаться завершения запроса до того, как продолжить работу с реальной бизнес-логикой.

Ответ на этот вопрос - использование токенов JWT. Они очень хорошо работают для небольшого количества данных (например, ограниченное количество ролей, а не сотни из них). Значки JWT можно безопасно помещать в файл cookie, чтобы каждый запрос браузера переносил его на сервер.

Вы можете получить более подробную информацию о токенах JWT здесь: https://jwt.io/introduction/. Этот другой вопрос StackOverflow содержит много информации о токенах JWT: Using JWT to implement Authentication on Asp.net web API.

Надеюсь, он решает ваши проблемы. Удачи.