我想确保我的应用程序检查某些路径是否仍然经过身份验证。要做到这一点,我添加到我的路线:
app.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/profile',{
templateUrl: 'templates/user/profile.html',
controller: 'ProfileCtrl',
resolve: [ 'SessionCheck' ]
}).
.......
我有一个处理['SessionCheck']
的工厂AppFactories.factory("SessionCheck", ['$http','$q','FlashService',
function($http,$q,FlashService) {
var def = $q.defer();
var SessionStatus = $http.get('/sessioncheck', {cache: false});
if(SessionStatus.success){
def.resolve();
}else{
FlashService.show(SessionStatus.data.flash);
def.reject;
}
return def.promise;
}]);
我可以看到链接被调用,但只有一次。每次我点击具有resolve属性的路由时,sessioncheck都不会发送到服务器....我已经尝试将缓存置于false,但仍然。我做错了什么?
答案 0 :(得分:0)
我怀疑问题是你如何使用解析器。尝试这样的事情:
在工厂:
AppFactories.factory("SessionCheck", ['$http','$q','FlashService', function($http,$q,FlashService) {
return {
resolve: function () {
var def = $q.defer();
var SessionStatus = $http.get('/sessioncheck', {cache: false});
if(SessionStatus.success){
def.resolve();
}else{
FlashService.show(SessionStatus.data.flash);
def.reject;
}
return def.promise;
}
};
}]);
并在路由器中:
app.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/profile',{
templateUrl: 'templates/user/profile.html',
controller: 'ProfileCtrl',
resolve: [ 'SessionCheck', function(sessionCheck) {
return sessionCheck.resolve();
}]
}).
.......