我有一个使用JSON用户API wordpress插件的应用程序。 我有这项服务来验证用户cookie。首先我调用一个用于cookie名称的API,然后我尝试验证cookie。
angular.module('app').service('AuthService', AuthService);
AuthService.$inject = ['$http'];
function AuthService($http) {
return {
isAuthenticated: isAuthenticated
};
function isAuthenticated(){
return $http.get('http://somesite/pCookie.php')
.then(function (response) {
var authCookieName = response.data.response;
var authCookie = getCookie(authCookieName);
var validity;
$http.get('http://somesite/api/user/validate_auth_cookie/?cookie='+authCookie)
.then(function (response) {
validity = response.data;
});
return validity;
});
}
}
问题是: 有没有提供LOGGED_IN_COOKIE cookie名称的其他方法? 由于嵌套函数,有效性未定义。我该如何解决?
答案 0 :(得分:1)
因为$http.get
中的第一个isAuthenticated
会返回一个承诺,所以您应该这样做:
function isAuthenticated() {
return $http.get('http://somesite/pCookie.php')
.then(function (response) {
var authCookieName = response.data.response;
var authCookie = getCookie(authCookieName);
return authCookie;
})
.then(function (authCookie) {
return $http.get('http://somesite/api/user/validate_auth_cookie/?cookie='+authCookie);
})
.then(function (response) {
return response.data;
});
}