Asp.net mvc - где хранить идентификатор пользователя - целое?
Я получил vibe, используя переменную сеанса, вроде как смотрел вниз в ASP.NET MVC.
Как только пользователь входит в систему, я хотел бы сохранить пользователь userId, чтобы мне не приходилось запрашивать его все время и т.д.
Каков наиболее эффективный способ сделать это в ASP.NET MVC?
Ответы
Ответ 1
Я видел похожие вопросы время от времени, и я не могу понять, откуда эта "вибрация". Это то, что Сессия специально предназначена для хранения информации, связанной с сеансом. Нет ничего плохого в использовании сеанса для хранения идентификатора пользователя или подобной информации.
Ответ 2
Вы получили правильную атмосферу. Это просто необязательно во многих сценариях. Состояние сеанса может быть легко потеряно и часто неправильно используется для обработки зарегистрированного пользователя (настройка этого пользователя выполняется путем установки Session [ "IsLoggedIn" ] = true или путем проверки сеанса [ "Пользователь" ]!= Null, внезапно сеанс исчезает и пользователь выйдет из системы), когда должна использоваться аутентификация форм. Здесь вы можете прочитать об аутентификации форм и сохранить с ним дополнительные данные:
Конфигурация аутентификации форм и расширенные темы
Если вы все еще хотите использовать сеанс, полезно создать оболочку, чтобы сделать ее более проверяемой и избавиться от строк в коде:
Обертка для сеанса ASP.NET
Ответ 3
Сеансы предназначены для использования в пользовательском взаимодействии с пользователем, - приходит в голову корзина покупок. Они смотрят сверху вниз, потому что они болезненны для тестирования и имеют тенденцию вставлять логику сериализации в контроллер. Если вы просто хотите свести к минимуму запросы, вы должны использовать кеширование.
EDIT:
Учебники для HttpContext.Cache удивительно трудно найти. Стивен Сандерсон имеет ~ 4 страницы в Pro ASP.net MVC Framework (Apress 2009) с. 530-534.
Кэширование в asp.net-mvc может также дать вам некоторые подсказки.
Ответ 4
Состояние сеанса. Не следует использовать его, когда он не подходит. Но ничего больше не работает для учетных данных. Просто убедитесь, что они сериализуемы, так что вы можете вывести сеанс из процесса, когда вам нужно.