我尝试在类似的问题中搜索我的答案,但没有成功。
我正在尝试使用Angular / PhP / MySQL创建我的第一个登录页面。有一些很棒的文章给了我很多帮助,最后我终于开始工作了。 Al hard it it works在控制台中仍有1个错误,我无法弄清楚。
控制台SS :(注意我正在打印变量的控制台日志,以查看尝试转到主页时分配的内容)
它甚至指出我需要查看的位置,第8行的' application.controller.js '。我在第9行打印出console.log,这给了我一个很好的结果(上面显示在控制台中)所以这就是我感到困惑的地方。
这是我的application.controller(部分):
app.run(function ($location, AUTH_EVENTS, AuthService) {
$rootScope.$on('$routeChangeStart', function (event, next) {
var authorizedRoles = next.data.authorizedRoles; <<< LINE 8
console.log(authorizedRoles);
if (!AuthService.isAuthorized(authorizedRoles)) {
event.preventDefault();
if (AuthService.isAuthenticated()) {
$location.path( "/login" );
} else {
$location.path( "/login" );
}
};
});
});
' next.data.authorizedRoles '指向我的路由文件,如下所示:
app.config(function ($routeProvider, USER_ROLES) {
$routeProvider
.when('/', {
templateUrl: 'views/home-page-display.php',
data: {
authorizedRoles: [USER_ROLES.admin, USER_ROLES.editor, USER_ROLES.guest]
}
})
.when('/login', {
templateUrl: 'views/login.php'
})
.otherwise({
redirectTo: '/login'
});
});
如果需要,这是我的工厂认证的一部分:
authService.isAuthenticated = function () {
return !!Session.userId;
};
authService.isAuthorized = function (authorizedRoles) {
if (!angular.isArray(authorizedRoles)) {
authorizedRoles = [authorizedRoles];
}
return (authService.isAuthenticated() && authorizedRoles.indexOf(Session.userRole) !== -1);
};
登录工作并将重定向到我的主页但我无法摆脱这个错误。由于我的console.log()显示了正确的用户角色,我开始认为问题出在其他地方。
答案 0 :(得分:0)
我找到了一个临时的&#39;溶液
在我的路线档案中,我已添加:
.when('/login', {
templateUrl: 'views/login.php',
data: {
authorizedRoles: []
}
})
当然,$ routeChangestart不允许没有权限的页面,也就是没有权限。所以在routechange函数中我添加了:
&& authorizedRoles != 0
以防止在没有分配任何角色时开火。
if (!AuthService.isAuthorized(authorizedRoles) && authorizedRoles != 0) {
可能有更好更清洁的解决方案,但至少我的错误信息已经消失! :)