答案 0 :(得分:1)
配置块非常适合可能对您有用的两段代码。
首先,您可以使用它来注入$ http拦截器,该拦截器将处理失败的身份验证调用和重定向。
angular.module("app", [])
.config(function ($httpProvider) {
$httpProvider.interceptors.push("authInterceptor");
});
你可以把这个 $ http intercepter 写成一个名为' authInterceptor'的工厂。 (未示出)。更多here,但重点是它可以从$ http响应中查找某些状态代码,例如401,并根据需要重定向到您的错误页面
根据您使用的路由,您可以使用路由解析属性来保持加载路由,直到数据得到解析。如果被拒绝,您创建的拦截器将重新路由。
angular.module("app", [])
.config(function ($routeProvider, $httpProvider, $http) {
$routeProvider
.when('/', {
controller:'MainCtrl',
template:'<h1>Hello!<h1>',
resolve:{
userData: return $http.get('/api/authentication');
}
});
$httpProvider.interceptors.push("authInterceptor");
});
最后一种选择是运行块,而不是进行初始身份验证调用。运行块在配置之后但在您的应用加载之前运行。
angular.module("app", [])
.config(function ($routeProvider, $httpProvider, $http) {
$httpProvider.interceptors.push("authInterceptor");
})
.run(function ($http) {
$http.get('/api/authentication');
});
我不会尝试运行此代码。你必须编写intercepter服务。你必须加载一个路由器模块等。希望这有点帮助。
答案 1 :(得分:0)
用$.ajax
角度取代$http
并等待承诺电话:
var checkUserlogin = function() {
return $http.get(serviceURL_CheckUserExists)
.then(function (response) {
if (response.Results.length == 1 && response.Results[0].BlockUser == false) {
return response.Results[0].User_ID.trim();
} else {
return null; // could not login
}
});
};
PS:我没有测试过此代码,如果您收到任何错误,请告诉我。