Я разрабатываю приложение для электронной коммерции, используя asp.net mvc.
После того, как пользователь успешно вошел в систему, приложение извлекает дополнительные данные из базы данных (избранное, история заказов, незавершенная корзина и т. д.)
Каков наилучший способ получить эти данные, если пользователь использовал опцию "Запомнить меня"?
Я думаю проверить, аутентифицирован ли пользователь, а дополнительные данные еще не загружены на главную страницу, но это кажется не лучшим решением.
Ответ 1 · рейтинг 1 · James S
У меня есть пользовательский класс, который собирает все эти биты вместе.
При запуске сеанса я проверяю подлинность, создаю его, заполняю и сохраняю в переменной сеанса. Затем вы можете получить к нему доступ из любого места (я также создал статический класс Globals, который получает/преобразует объекты из переменных сеанса и приложения). Кроме того, вы можете делать это при каждой загрузке страницы.
Вышеупомянутое заботится о возвращающихся пользователях. Но вы также должны не забыть создать его при входе в систему и уничтожить при выходе из системы (из контроллера учетных записей).
Также я бы посоветовал вам подумать о том, что именно нужно хранить таким образом. Переменная сеанса отлично подходит для кэширования этих данных, но я не знаю, нужно ли кэшировать историю заказов. Обычно к нему обращаются только изредка. На самом деле, даже если вы решите не помещать класс в сеанс, а создавать его при каждой загрузке страницы, получение истории заказов кажется излишним. (В любом случае вы тратите ресурсы впустую - храните их в кеше или часто собираете.)
Джеймс