Cách tốt nhất để làm điều này là thiết lập trình lắng nghe '$ routeChangeStart' kiểm tra chức năng dịch vụ 'authProvider' để xác minh rằng có người dùng đã đăng nhập. Trong 'app.js' của chúng tôi hoặc trong một tệp riêng biệt :
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');
}
});
}])
Sau đó, dịch vụ 'authProvider' của chúng tôi:
angular.module('myApp')
.factory('authProvider', function() {
var user;
return {
setUser : function(aUser){
user = aUser;
},
isLoggedIn : function(){
return(user)? user : false;
}
};
});
giải pháp này đã được tạo ra từ một câu trả lời here trên stack overflow.
Cảm ơn bạn @MohammadAwwaad
Tạo trình xử lý '$ routeChangeStart' hoặc' $ stateChangeStart' (cho bộ định tuyến ui), kiểm tra trạng thái xác thực, chuyển hướng đến đăng nhập nếu không được xác thực. –
Cảm ơn @martoncsukas vì đã chỉnh sửa. – sturoid