2014-12-20 3 views
0

Сценарий:Как узнать, зарегистрирован ли пользователь в угловом/узловом приложении?

Пользователь пытается войти в приложение, учетные данные, которые были переданы узлу, чтобы проверить, существует ли он, если да, то некоторые учетные данные аутентификации помещаются в значение true, а учетная запись пользователя - на месте, и с угловым у меня есть служба, которая выполняет следующее:

angular.module(myapp).service('accountService',function($http){ 
     var account= null;  
return { 
     authUser = function(credentials){ 
      .... 
     }; 
     setaccount = function(accountObj){ 
      account = accountObj; 
      ... 
     }  
    } 

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

Например: я посмотрел в средний стек, чтобы увидеть их Approch, и что они делают, как делают userObject открытой, так что я могу сделать window.loggedinUser (Это происходит из хранилища сеанса какой-то?)

есть и другие примеры я предполагать, что имеет дело с методом выполнения делать что-то, но мой вопрос заключается в следующем:

каждый раз, когда пользователь нажимает обновить если программа сделать что-то в перспективе, чтобы определить, является ли пользователь все еще находится в или нет (что означает обращение к запросу сервера при каждом обновлении)?

Что является лучшим решением, чтобы сделать так, простой пример будет понятно ....

+1

Необходимо сохранить состояние пользователя. Используйте LocalStorage (имеется модуль angularjs). –

ответ

1

Для большинства приложений AngularJS учетные данные пользователя извлекаются с сервера с помощью запроса асинхронного HTTP. Это создает проблему синхронизации, когда запускается AngularJS и когда приложение знает, есть ли сеанс пользователя.

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

Это становится проблемой, если текущий маршрут ограничен только подписчиками только для пользователей.

Лучшим рекомендуемым подходом является использование обещаний по маршруту. Ваш accountService должен предоставить метод, который вернет обещание, которое выберет сеанс текущего пользователя. Если он уже имеет его, то его можно использовать, иначе он должен выполнить HTTP-запрос для получения. В любом случае, результат всегда должен быть обещанием.

Вот как вы должны сделать сеанс пользователя доступным в своем приложении. Через обещание по маршруту.

+0

Есть ли способ увидеть простой пример? где-то? – totothegreat

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