如果有人在未通过身份验证的情况下尝试访问任何其他路由,我该如何重定向到登录页面?在 AngularJS 中有没有“最好”的方法来做到这一点?
这似乎是一个常见问题,但我似乎找不到解决方法。预先感谢您的帮助。
最佳答案
执行此操作的最佳方法是设置一个“$routeChangeStart”监听器,它检查“authProvider”服务函数以验证是否有用户登录。在我们的“app.js”或单独的文件中:
angular.module('myApp')
.run(['$rootScope', '$location', 'authProvider', function ($rootScope, $location, authProvider) {
$rootScope.$on('$routeChangeStart', function (event) {
if (!authProvider.isLoggedIn()) {
console.log('DENY : Redirecting to Login');
event.preventDefault();
$location.path('/login');
}
else {
console.log('ALLOW');
}
});
}])
然后对于我们的“authProvider”服务:
angular.module('myApp')
.factory('authProvider', function() {
var user;
return {
setUser : function(aUser){
user = aUser;
},
isLoggedIn : function(){
return(user)? user : false;
}
};
});
此解决方案是根据一个答案 here 创建的堆栈溢出。
谢谢@MohammadAwwaad
关于javascript - 如果未通过身份验证,则在所有路由上重定向以登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26145871/