GET x-Auth-Token via JavaScript/Angular/Ionic Promise
GET x-Auth-Token via JavaScript/Angular/Ionic Promise
我有一个问题,不知道如何解决...我必须通过基于令牌的身份验证对IonicApp中的用户进行身份验证。所以我必须将令牌存储在应用程序中,这应该不是问题......问题是:如何获取令牌?这是我的代码:
// Alle Aufrufe an die REST-Api werden hier durchgeführt
var httpCall = {
async : function(method, url, header, params, data) {
// if (url != 'login') {
// header['X-Auth-Token'] = userTokenFactory.getUserToken();
// }
//console.log(header['X-Auth-Token']);
var ipurl = "IPURL";
// $http returns a promise, which has a then function, which also returns a promise
var promise = $http({
method : method,
url : ipurl + url,
//headers : header,
params : params,
data : data,
config : {
timeout : 5000
}
}).then(function successCallback(response) {
//console.log("data:" + response.data);
//console.log("header:" + response.headers);
console.log("token:" + response.headers['X-AUTH-TOKEN']);
//console.log(response.data.token);
console.log("token" + repsonse.token);
// TRY TO READ THE X_AUTH_TOKEN HERE !!!!!!!!!!!!
return response;
}, function errorCallback(response) {
return response;
});
// Return the promise to the controller
return promise;
}
};
return httpCall;
});
这是来自服务器的响应图片(来自Firefox)。如您所见,X-Auth-Token就在那里...这是 X-身份验证令牌
感谢您的帮助!!
有很多3. 写
文章可以在AngularJS中处理身份验证。这篇文章非常适合您的情况。
因此,您可以从请求中获取令牌,因为,
}).then(function successCallback(response) {
console.log("data:" + response.data);
$window.sessionStorage.token = response.data.token;
return response;
}, function errorCallback(response) {
return response;
});
现在我们将令牌保存在会话存储中。此令牌可以通过至少三种方式与每个请求一起发回
1. 在每个请求中设置标头:
`$http({method: 'GET', url: url, headers: {
'Authorization': 'Bearer ' + $window.sessionStorage.token}
});`
2. 设置默认标题
`$http.defaults.headers.common['X-Auth-Token'] = 'Bearer ' + $window.sessionStorage.token;`
3. 写Interceptor
:
拦截器能够在请求之前拦截请求 交给服务器,并在移交给 启动这些请求的应用程序代码
myApp.factory('authInterceptor', function ($rootScope, $q, $window) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.sessionStorage.token) {
config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
}
return config;
},
response: function (response) {
if (response.status === 401) {
// handle the case where the user is not authenticated
}
return response || $q.when(response);
}
};
});
myApp.config(function ($httpProvider) {
$httpProvider.interceptors.push('authInterceptor');
});
有关详细说明,请参阅 AngularJS $http指南。
当您获得 response.data null 并且图像表明正在返回标头时,我建议您检查您是否正在获取数据
response.headers()
,
如果然后尝试使用response.headers()["X_AUTH_TOKEN"]
.
相关文章:
- 测试Angular Service解决错误回调中的promise
- Angular promise return"未定义的“;值.NET MVC
- angular ui bootstrap:当模式关闭时,promise被解析/拒绝
- 如何将多个onError函数分配给promise(由angular's$http.post返回)
- 从angular$http获取promise数据
- Angular Promise未同步运行
- 在Angular服务中使用$http时,为什么要返回promise和数据
- Angular promise回调不是在构造函数方法内部触发,而是在对象文本方法中触发
- 正在读取angular js promise中的NegotiatedContentResult对象(从WebAPI发送)
- Angular promise服务作为全局数据服务
- Angular promise从JSON API返回不正确的数据
- 如何将 Angular promise 与 webrtc (RecordRTC) 结合使用
- 从 Angular Promise 获取数据
- Jasmine Testing with Angular Promise 无法使用 TypeScript 解析
- Angular Promise 在服务器调用完成之前返回
- angular promise-$q当错误时调用其中一个
- Angular Promise响应检查
- Angular $promise without using defer
- 如何在Angular promise请求中获取结果数据
- 在服务调用后创建一个简单的Angular promise