每次我发出请求时,我都想在标头中传递我的令牌。我现在的做法是使用:
$http.defaults.headers.common['auth_token'] = $localStorage.token;
我怎么能这样做才能将其发送到每个请求,并且当它抛出错误时它应该执行
$state.go('login')
每次我发出请求时,我都想在标头中传递我的令牌。我现在的做法是使用:
$http.defaults.headers.common['auth_token'] = $localStorage.token;
我怎么能这样做才能将其发送到每个请求,并且当它抛出错误时它应该执行
$state.go('login')
如果您想将令牌添加到每个请求并响应任何错误,那么最好的选择是使用 Angular HTTP 拦截器。
根据您的需要,它可能看起来像这样:
$httpProvider.interceptors.push(function ($q, $state, $localStorage) {
return {
// Add an interceptor for requests.
'request': function (config) {
config.headers = config.headers || {}; // Default to an empty object if no headers are set.
// Set the header if the token is stored.
if($localStorage.token) {
config.headers.common['auth_token'] = $localStorage.token;
}
return config;
},
// Add an interceptor for any responses that error.
'responseError': function(response) {
// Check if the error is auth-related.
if(response.status === 401 || response.status === 403) {
$state.go('login');
}
return $q.reject(response);
}
};
});
希望这可以帮助。