asp.net mvc - где хранить userid - целое число? - PullRequest
14 голосов
/ 15 февраля 2010

Я понял, что с помощью переменной сеанса на ASP.NET MVC вроде как смотрят свысока.

Как только пользователь входит в систему, я хотел бы сохранить userId пользователя, чтобы мне не приходилось запрашивать его все время и т. Д.

Какой самый эффективный способ сделать это в ASP.NET MVC?

Ответы [ 4 ]

18 голосов
/ 15 февраля 2010

Я видел подобные вопросы, возникающие время от времени, и я не могу понять, откуда исходит эта "атмосфера". Именно для этого и предназначен Session - для хранения информации, относящейся к сеансу. Нет ничего плохого в том, чтобы использовать Session для хранения идентификатора пользователя или подобной информации.

8 голосов
/ 15 февраля 2010

Вы получили правильную атмосферу. Это просто не нужно во многих сценариях. Состояние сеанса может быть легко потеряно и часто используется неправильно для обработки вошедшего в систему пользователя (установка того, что пользователь вошел в систему, выполняется установкой Session ["IsLoggedIn"] = true или проверкой Session ["User"]! = Null, внезапно Session исчезает и пользователь вышел из системы), когда следует использовать проверку подлинности с помощью форм. Здесь вы можете прочитать об аутентификации форм и хранении дополнительных данных вместе с ней:

Настройка проверки подлинности с помощью форм и дополнительные темы

Если вы все еще хотите использовать сессию, лучше создать оболочку, чтобы сделать ее более тестируемой и избавиться от строк в коде:

Оболочка для ASP.NET Session

2 голосов
/ 15 февраля 2010

Сессии предназначены для взаимодействия с пользователем с учетом состояния - на ум приходит корзина покупок. На них смотрят свысока, потому что их больно проверять, и они склонны вводить логику сериализации в контроллер. Если вы просто хотите свести к минимуму количество запросов, используйте кэширование.

EDIT: Учебники для HttpContext.Cache на удивление трудно найти. Стивен Сандерсон имеет ~ 4 страницы в Pro ASP.net MVC Framework (Apress 2009) с. 530-534.

Кэширование в asp.net-mvc может также дать вам некоторые подсказки.

0 голосов
/ 15 февраля 2010

Состояние сеанса. Не следует использовать его, когда это не подходит. Но больше ничего не работает для учетных данных. Просто убедитесь, что они сериализуемы, так что вы можете вытолкнуть сеанс из процесса, когда вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...