我正在开展一项Angular项目,但我遇到了一些问题,我很感激任何帮助,因为我真的输了。基本上我需要检查用户是否已登录,如果是,则不应该允许他访问某个视图/路由,这里是我使用的代码:
'use strict';
angular.module('testApp')
.config(function ($routeProvider) {
$routeProvider
.when('/registroVisitante', {
template: '<registro-visitante></registro-visitante>',
resolve: {
"check": function(Auth, $location) {
console.log(Auth.isLoggedIn());
if (!Auth.isLoggedIn()) {
alert("Access allowed");
} else {
$location.path('/'); //redirect user to home.
alert("Access denied");
}
}
}
});
});
问题本身就是,这实际上是有效的,但只有当我尝试通过锚点击或ng-click或其他任何方式访问路线时,但是,当我在地址栏中键入路线时,它允许我访问但是它不应该,任何人都知道为什么?
答案 0 :(得分:1)
试试这个
angular.module('testApp')
.config(function ($routeProvider) {
$routeProvider
.when('/registroVisitante', {
template: '<registro-visitante></registro-visitante>',
resolve: {
"check": function (Auth, $location) {
Auth.isLoggedIn(function (response) {
console.log(response);
if (response) {
$location.path('/'); //redirect user to home.
}
});
}
}
});
});
问题是它是一个异步请求,也许当它到达时它是否未定义。