2013-09-12 5 views
7

У меня есть это веб-приложение, написанное в AngularJs, которое использует файлы cookie для аутентификации запросов в REST API.Как сохранить данные сеанса в приложении AngularJS?

После входа пользователя в систему cookie будет получен и сохранен в браузере, а все последующие запросы отправят файл cookie на сервер. Существует сервис/объект «Пользователь», который сохраняет значения isLoggedIn и имени пользователя (для отображения/потока пользовательского интерфейса). Теперь, если я обновляю страницу «index», приложение перезагружается. Это означает, что мой объект «Пользователь» будет очищен. Я могу проверить наличие файла cookie, и, если он существует, я могу повторно установить User.isLoggeIn как истину и перейти оттуда, но мне все равно нужно получить имя пользователя, идентификатор и т. Д. Итак, мой вопрос: следует Я создаю какой-то «пинговый» конечный пункт в API, чтобы проверить, является ли файл cookie действительным? И если это так, API отправит мне идентификатор пользователя и имя пользователя ... ИЛИ должен ли я сохранять данные пользователя в LocalStorage (или какой-то подобной кросс-браузерной вещи) и просто предположить, что пользователь зарегистрирован, если файл cookie существует? Любые другие последующие запросы на страницы, требующие аутентификации, будут автоматически проверены. Таким образом, этот вопрос действительно применим только к сценарию, в котором пользователь обновляет страницу индекса - следовательно, перезапуск веб-приложения. Я хочу знать пользовательские данные, потому что я хочу показать «домашнюю страницу пользователя» вместо «общедоступной страницы».

Как вы думаете?

+0

Привет, посмотрите http://www.espeo.pl/2012/02/26/authentication-in-angularjs-application – Whisher

ответ

10

Для этого вам следует зависеть от сервера. Создание чего-то типа GetCurrentUser метода на сервере. Если пользователь вошел в систему, он возвращает все свойства пользователя.

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

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

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

Смежные вопросы