Каков наилучший способ хранения временной пользовательской информации в asp.net? - PullRequest
0 голосов
/ 04 августа 2011

Когда пользователь входит в систему, есть ряд атрибутов, которые мне нужно извлечь из ActiveDirectory, таких как их настоящее имя, некоторые контакты и т. Д. Некоторые из этих полей я буду показывать довольно часто в некоторых формах.Скорость извлечения ActiveDirectory в моем случае довольно плохая, поэтому мне было интересно, как лучше всего сохранить эту информацию в памяти при входе в систему, а затем удалить ее после выхода из системы / тайм-аута?

Мои мыслипока: 1) Хранить в сеансе, но безопасно ли?2) Расширьте User.Identity и сохраните его там.Не уверен, что это возможно.3) Храните его в каком-то глобальном словаре.Откуда мне знать, что они вышли из системы, чтобы удалить пару ключ / значение?

Я использую MVC2 для этого проекта, и мне не нужно выполнять обратную запись в ActiveDirectory.

Ответы [ 3 ]

2 голосов
/ 04 августа 2011

Сессионные объекты довольно часто используются для хранения информации.Если вас беспокоит безопасность, вы можете использовать HTTPS для связи или использовать State Server или SQL Server для хранения этой информации.

1 голос
/ 04 августа 2011

Да, как говорится, вы можете использовать провайдер профиля для хранения данных. Я лично использую данные сеанса.

мой взгляд почему:

1, Решение для базы данных путем добавления поля в профиль (как AdditionalUserData = данные здесь) Сделайте его простым в использовании и не займет много времени для реализации в качестве обработки сеанса.

2, данные сеанса всегда находятся на сервере, и вам не нужно заботиться о данных в базе данных, и они работают без них. (несколько проектов было сделано таким образом) это разумно сохранить и легко получить доступ, и вы можете добавить время истечения срока действия. Также вы можете хранить больше информации о пользователе.

3-й вариант: Вам нужно было бы иметь временную метку и проверять каждый просроченный запрос и удалять эти записи, в этом случае вам нужно было бы иметь словарь для каждого пользователя ...

Проблема твоя ....

Надеюсь, это поможет

1 голос
/ 04 августа 2011

Я бы включил это в сессию, пока это не большой объем данных. Похоже, это идеально подходит для состояния сеанса. Там не должно быть никаких проблем безопасности, если вы используете https.

Если вас беспокоит объем данных, которые вы переводите в состояние сеанса, вы также можете рассмотреть возможность использования поставщика профилей ASP.NET , но вам понадобится какой-то механизм синхронизируйте данные с AD (возможно, каждый раз, когда пользователь входит в систему). При этом, если это не огромное количество данных, я думаю, что сессия - это путь.

...