我有个问题,不知道怎么解决.我必须通过基于令牌的身份验证来验证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-8月-令牌在那里.这是x-auth-记号
谢谢你的帮助!!
发布于 2016-03-06 13:46:19
在AngularJS中有许多关于身份验证处理的文章可用。这篇文章是一个完美的适合您的情况。
所以你可以从你的请求中得到令牌,
}).then(function successCallback(response) {
console.log("data:" + response.data);
$window.sessionStorage.token = response.data.token;
return response;
}, function errorCallback(response) {
return response;
});现在,我们已经将令牌保存在sessionStorage中。此令牌可以通过至少三种方式与每个请求一起发回。
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"]。
https://stackoverflow.com/questions/35817196
复制相似问题