Добавить конфиг в угловой ресурс
Я использую http-auth-interceptor для аутентификации. В http-auth-interceptor я использую следующий способ входа в систему:
var data = 'username=' + encodeURIComponent(user.userId) + '&password=' + encodeURIComponent(user.password);
$http.post('api/authenticate', data, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
ignoreAuthModule: 'ignoreAuthModule'
})
ignoreAuthModule
используется, чтобы сказать ignoreAuthModule
что этот метод входа в систему будет игнорироваться перехватчиком аутентификации.
Теперь у меня есть запрос с $resource, например:
.factory('SomeDataService', function ($resource) {
return $resource('api/some/data', {}, {
'get': { method: 'GET'}
});
})
я хочу SomeDataService.get()
также игнорируется аутентификационными перехватчиками, потому что мне нужно самостоятельно контролировать ошибку 401.
Итак, мой вопрос, есть ли способ для ngResource, который я могу установить config как это в $ http.
[обновление на основе комментария] Я прослушал login-required
событие:
$rootScope.$on('event:auth-loginRequired', function (rejection) {
$log.log(rejection);
// I need to get the request url and for some specific url, need to do something.
$rootScope.loginPopup();
});
Но у параметра 'rejection' нет контекстных данных запроса, который мне нужен. Мне нужно получить URL-адрес запроса и проверить, для какого-то указанного URL-адреса мне нужно что-то сделать.
2 ответа
После проверки документа ngResource, я получил решение, как показано ниже:
.factory('SomeDataService', function ($resource) {
return $resource('api/some/data', {}, {
'get': { method: 'GET', ignoreAuthModule: 'ignoreAuthModule'}
});
})
Просто добавьте элемент конфигурации, как указано выше. Это будет эквивалентное объявление:
$http.post('api/some/data', data, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
ignoreAuthModule: 'ignoreAuthModule'
})
Модуль ngResource построен на основе $http. Однако невозможно настроить все, что вы можете сделать с помощью $ http в $resource. Я думаю, что приведенная ниже ссылка поможет вам получить четкое представление о $ http и $ resource