Добавить конфиг в угловой ресурс

Я использую 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

Другие вопросы по тегам