ASP.Net MVC - лучший способ определить возвращающегося пользователя

Я разрабатываю приложение для электронной коммерции, используя asp.net mvc.

После того, как пользователь успешно вошел в систему, приложение извлекает дополнительные данные из базы данных (избранное, история заказов, незавершенная корзина и т. д.)

Каков наилучший способ получить эти данные, если пользователь использовал опцию «Запомнить меня»?

Я думаю проверить, аутентифицирован ли пользователь, а дополнительные данные еще не загружены на главную страницу, но это кажется не лучшим решением.


person Michael D.    schedule 28.07.2009    source источник


Ответы (1)


У меня есть пользовательский класс, который собирает все эти биты вместе.

При запуске сеанса я проверяю подлинность, создаю его, заполняю и сохраняю в переменной сеанса. Затем вы можете получить к нему доступ из любого места (я также создал статический класс Globals, который получает/преобразует объекты из переменных сеанса и приложения). Кроме того, вы можете делать это при каждой загрузке страницы.

Вышеупомянутое заботится о возвращающихся пользователях. Но вы также должны не забыть создать его при входе в систему и уничтожить при выходе из системы (из контроллера учетных записей).

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

Джеймс

person James S    schedule 28.07.2009
comment
У меня есть легкий пользовательский класс, который я сохраняю в сеансе при входе в систему и удаляю при выходе из системы. История заказов там не хранится, а извлекается по запросу. Можете ли вы дать более подробную информацию о том, КАК вы проверяете подлинность? - person Michael D.; 28.07.2009
comment
Ой. Предполагая, что вы не делаете ничего сумасшедшего (например, запускаете собственную аутентификацию), проверьте HttpContext.Current.User.Identity.IsAuthenticated . Вы также можете получить имя пользователя из Identity.Name. - person James S; 28.07.2009