stu*_*oid 17 javascript authentication angularjs
如果有人在未经过身份验证时尝试点击任何其他路由,我该如何重定向到登录页面?在AngularJS中有没有"最好"的方法呢?
似乎是一个常见的问题,但我似乎无法找到一种方法来做到这一点.预先感谢您的帮助.
Ror*_*120 21
执行此操作的最佳方法是设置'$ 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');
}
});
}])
Run Code Online (Sandbox Code Playgroud)
然后为我们的'authProvider'服务:
angular.module('myApp')
.factory('authProvider', function() {
var user;
return {
setUser : function(aUser){
user = aUser;
},
isLoggedIn : function(){
return(user)? user : false;
}
};
});
Run Code Online (Sandbox Code Playgroud)
该解决方案是从一个答案创建这里对堆栈溢出.
谢谢@MohammadAwwaad
| 归档时间: |
|
| 查看次数: |
15032 次 |
| 最近记录: |