Как получить данные ответа с сервера в angularjs

Это мой сценарий. Сервер в nodejs обрабатывает процедуру аутентификации, а во внешнем интерфейсе у нас есть angularjs. когда пользователь нажимает кнопку, он входит в систему через Facebook, после чего сервер обрабатывает все аспекты аутентификации в конце перенаправления на uri приложения angularjs. У нас на сервере что-то подобное

module.exports = function(request, reply) {

  if (request.auth.isAuthenticated) {

    var profile = request.auth.credentials.profile.raw;

    // set to cookie
    request.auth.session.set(profile);

    // Perform any account lookup or registration, setup local session,
    // and redirect to the application. The third-party credentials are
    // stored in request.auth.credentials. Any query parameters from
    // the initial request are passed back via request.auth.credentials.query

    // here we should redirect the app flow somewhere
    return reply({ profile: profile.id }).redirect('http://localhost:8080/app');
  }

  return reply('Unauthorized').code(401);
};

Моя проблема в том, что я не знаю, как получить объект профиля в angularjs. Я имею в виду, что знаю, что существует $http провайдер, но в следующем случае запрос не начинается с angularjs. запуская поток, сервер отвечает SPA, если подпись пользователя успешно


$http.get('/app')
  .success(function(data){
     console.log(data);
   });

person Mazzy    schedule 19.04.2015    source источник
comment
После загрузки SPA вы все равно должны использовать $http для получения данных профиля.   -  person mohamedrias    schedule 19.04.2015
comment
хорошо, но какой должен быть uri?   -  person Mazzy    schedule 19.04.2015
comment
Я имею в виду, что я всегда предполагал, что провайдер $http начнет вызов, но в этом случае поток отличается. сервер обслуживает SPA   -  person Mazzy    schedule 19.04.2015
comment
может быть, я должен использовать / приложение?   -  person Mazzy    schedule 19.04.2015
comment
В обоих случаях SPA обслуживается с сервера. Так что поток не меняется. Вы должны перенаправить на приложение uri /app   -  person mohamedrias    schedule 19.04.2015
comment
что-то мне непонятно и не работает. Я перенаправляю сервер на uri приложения angularjs. в этом uri есть поставщик $http, подобный приведенному выше   -  person Mazzy    schedule 19.04.2015
comment
/app — это URL-адрес, соответствующий состоянию UI-маршрутизатора.   -  person Mazzy    schedule 19.04.2015
comment
@mohamedrias, когда я вызываю $http в SPA, он вызывает сервер, а затем сервер вызывается дважды. ты понимаешь о чем я?   -  person Mazzy    schedule 19.04.2015
comment
Да, я понял. До этого где кнопка входа присутствует? это часть углового приложения?   -  person mohamedrias    schedule 19.04.2015


Ответы (1)


вы можете отправить его как параметр URL, используя $routeProvider

ваш конфиг должен выглядеть так:

app.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/login/:profileId', {
        templateUrl: 'template.html',
        controller: 'loginCtrl'
      }).
      otherwise({
        redirectTo: '/home'
      });
  }]);

ваш контроллер:

app.controller("loginCtrl",function($routeParams,$scope){
   $scope.profileId = $routeParams.profileId;
   //YOU CAN REDIRECT HERE TO ANOTHER VIEW AFTER
})

Серверная часть

module.exports = function(request, reply) {

  if (request.auth.isAuthenticated) {

    var profile = request.auth.credentials.profile.raw;

    // set to cookie
    request.auth.session.set(profile);

    // Perform any account lookup or registration, setup local session,
    // and redirect to the application. The third-party credentials are
    // stored in request.auth.credentials. Any query parameters from
    // the initial request are passed back via request.auth.credentials.query

    // here we should redirect the app flow somewhere
    return reply({ profile: profile.id
    // use # for html5 mode 
  }).redirect('http://localhost:8080/app/#/login/'+profile.id);
  }

  return reply('Unauthorized').code(401);
};
person Donald P. Morton    schedule 19.04.2015
comment
Спасибо. это было проще, чем я когда-либо ожидал - person Mazzy; 19.04.2015