我使用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
auth拦截器将忽略此登录方法。
现在,我有一些使用$ resource的请求,例如:
.factory('SomeDataService', function ($resource) {
return $resource('api/some/data', {}, {
'get': { method: 'GET'}
});
})
我希望SomeDataService.get()
也被auth拦截器忽略,因为我需要自己控制401错误。
所以,我的问题是,对于ngResource有什么办法,我可以在$ 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,我需要做一些事情。
答案 0 :(得分:1)
在检查了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'
})
答案 1 :(得分:0)
ngResource模块构建在$ http.Hence之上,不可能在$ resource中配置你可以用$ http做的所有东西。我认为以下链接将指导你清楚地了解{{ 3}}