Авторизация удаленного сервера Angular

0

Я пытаюсь получить данные из удаленного веб-сервиса с помощью своего углового приложения. Поскольку сервер использует WSi2 api manager для обработки запросов, мне нужно передать "Авторизация: Bearer 31363a37a017a4b2e9b1104981ff" вместе с запросами.

Мой запрос выглядит следующим образом

movieControllers.controller('MovieListCtrl', ['$scope', '$http',
  function($scope, $http) {
    $http.jsonp('http:myserverurl/1.0.0'
      ,{
    headers: {Authorization: 'Bearer AUTH_CODE_HERE'}
  }).success(function(data, status, headers, config) {
      $scope.movies= data;
      $scope.status = status;
 
    }).error(function(error, status, headers, config) {
      $scope.status = status;
     
});

   }]);

Но это дает мне "несанкционированный доступ". Кажется, что заголовок установлен неправильно. Затем я направил запрос на свою апи. Это не требовало разрешения. И это нормально.

Я новичок в угловой и этой API-интерфейсе и веб-сервисе. Нужно ли устанавливать дополнительный модуль для Oauth? (Я предполагаю, что эта авторизация - это oauth. Исправьте меня, если я ошибаюсь). может кто-нибудь указать мне в правильном направлении, и это очень ценится. Благодарю.

  • 0
    Вы можете убедиться, что заголовок установлен или нет в запросе заголовка. Я бы порекомендовал вам создать перехватчик для такого типа вещей. Дайте знать, если вы можете увидеть заголовок запроса в Chrome.
  • 0
    Нет заголовка не устанавливается правильно. Я не вижу заголовок в запросе.
Теги:
wso2-am

2 ответа

0

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

Все, что вам нужно сделать, это упомянуть перехватчик в $ httpProvider

 var myApp = angular.module('myApp');
 //Set configs
 myApp.config(function($httpProvider){
   //Add dependencyof interceptor  
   $httpProvider.interceptors.push( 'myInterceptor');
 });

Теперь создайте перехватчик на заводе

 //Create you interceptor here
 mayApp.factory('myInterceptor', function() {
       return {
          request: function(config) {              
            config.headers[ 'Authorization' ] = 'Bearer AUTH_CODE_HERE';
            return config;
          }
       }
  });

Таким образом, вы решаете добавить заголовок авторизации в каждом запросе. Этот перехватчик также будет полезен, если вы хотите изменить конфигурацию или хотите динамически генерировать заголовок авторизации для каждого запроса. Надеюсь, это поможет вам. Ура!

0

Перед $http.jsonp если вы назначили авторизацию. это будет работать

$http.defaults.headers.common. Authorization = 'Bearer AUTH_CODE_HERE'

В этом случае ваш код должен быть -

movieControllers.controller('MovieListCtrl', ['$scope', '$http',
  function($scope, $http) {

    $http.defaults.headers.common. Authorization = 'Bearer AUTH_CODE_HERE';

    $http.jsonp('http:myserverurl/1.0.0')
    .success(function(data, status, headers, config) {
    $scope.movies= data;
    $scope.status = status;

    }).error(function(error, status, headers, config) {
    $scope.status = status;

   });
}]);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню