2015-01-30 4 views
1

Идея проста. На сервер запрашивается запрос $ POST POST. Пользователь аутентифицируется, и сервер возвращает информацию о пользователе. Я помещаю эту информацию в Сервис, и я могу легко использовать ее через разные контроллеры, но когда я обновляю страницу, данные теряются ... и я должен снова войти в систему, чтобы получать данные с сервера. Есть ли способ сохранить ответ сервера, даже если страница обновлена?

Это служба делает запрос на $ Http:

app.factory('AuthService', function ($http) { 

    var authService = {}; 

    authService.login = function (credentials) { 

     var req = { 
      method: 'POST', 
      url: 'api/v1/login', 
      data: { email: credentials.email, password: credentials.password } 
     }; 

     return $http(req); 
    }; 

    return authService; 

}); 

Это контроллер с помощью службы:

app.controller('LoginCtrl', function ($scope, $http, AuthService, SessionService) { 
    $scope.credentials = { 
     email: '', 
     password: '', 
     remember: true 
    }; 

    $scope.login = function (credentials) { 

     var authentication = AuthService.login(credentials); 
     authentication.success(function(response) { 
      console.log(response); 
      if (response.status.code="ok"){ 
       SessionService.set('auth', true); 
      } else { 
       alert("Couldn't perform Login!"); 
      } 
     }).error(function (error) { 
      console.log(error); 
     }); 
    }; 
}); 
+0

Вы смотрели в ngStorage? http://ngmodules.org/modules/ngStorage –

+0

На какой платформе вы используете серверы? –

+0

Я использую Laravel на стороне сервера @MichaelColeman – Robert

ответ

1

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

https://docs.angularjs.org/api/ngCookies/service/$cookieStore

+0

Спасибо за ваш ответ. При поиске в Интернете я наткнулся на локальное хранилище? Разве это не лучшее решение, чем $ cookieStore? И почему бы нет)? – Robert

+0

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

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