就像已经提到的其他答案一样,您应该注意应用程序的安全性。
可能的解决方案是:
检查用户是否通过身份验证
在您的 API 中实施身份验证。您可以检查用户是否使用 responseInterceptor 登录:
.config(['$routeProvider','$httpProvider', function($routeProvider,$httpProvider) {
//setup your routes here...
var authChecker = ['$location', '$q', function($location, $q) {
//redirects the user to /login page if he's not authorized (401)
function success(response) {
return response;
}
function error(response) {
if(response.status === 401) {
$location.path('/login');
return $q.reject(response);
}
else {
return $q.reject(response);
}
}
return function(promise) {
return promise.then(success, error);
}
}];
$httpProvider.responseInterceptors.push(authChecker);
}])
有关详细信息,请参阅$http 文档。
解决方法:运行范围
不能解决安全问题,但也可以:
像这样在运行块中获取数据:
.run(function($http,$location,$rootScope) {
$rootScope.$on("$routeChangeStart", function (event, next, current) {
if($rootScope.gotData) {
$location.path(next.path);
} else {
$location.path('/loading');
}
});
$http.get('path/to/data').success(function() {
$rootScope.gotData = true;
$location.path('/home');
}).error(function() {
$location.path('/404');
})
})
有关更多信息,请参阅文档。