
[英]How to redirect user to login page when refreshing the page in AngularJS
[英]AngularJS: Redirect to Login Page when authentication fails
如果密码和用户名不正确,这是重定向ti登录页面的正确方法吗?
when('/dashboard', {
resolve:{
"check": function($location,$rootScope,$cookieStore)
{
if(!$cookieStore.get('token'))
{
$location.path("/login");
}
}
},
templateUrl: 'views/dashboard/index.html',
//controller: 'AboutCtrl',
//controllerAs: 'about'
}
你可以做这样的事情
.when('/viewprojects', {
templateUrl: '/views/projects.html',
controller: 'ProjectViewController',
resolve: {
authenticate: authenticateCb
}
})
authenticateCb
在哪里:
/**
* A callback to authenticate routes navigation.
* @param {Object} Authenticator Authentication service
* @returns {Object} authenticated promise.
*/
var authenticateCb = function (AuthenticatorService) {
return AuthenticatorService.authenticated();
};
AuthenticatorService进行如下操作:
function AuthenticatorService($q, $rootScope, $location, NotifierService, ViewPath) {
/**
* Authentics the user on route changes and navigate to corresponding
* view. If the user is not authenticated then it naviagtes the user
* to Log in page.
* @returns {Object} authenticated promise.
*/
this.authenticated = function () {
var deferred = $q.defer();
if ($rootScope.token) {
deferred.resolve('Authenticated.');
} else {
NotifierService.notify('PLEASE_LOGIN_AGAIN', 'error');
$location.path(ViewPath.LOGIN_PAGE);
deferred.reject();
}
return deferred.promise;
};
}
希望这可以帮助。
否。它应该返回一个promise
来解决该路线。 例如
解决方案中将使用该服务的路由配置。
$routeProvider
.when("/news", {
templateUrl: "newsView.html",
controller: "newsController",
resolve: {
greeting: function(greetingService){
return greetingService.getGreeting();
}
}
})
以下简单的greetingService
使用$ q模拟获取某些数据所需的异步工作。
app.factory("greetingService", function($q, $timeout){
return {
getGreeting: function(){
var deferred = $q.defer();
$timeout(function(){
deferred.resolve("Allo!");
},2000);
return deferred.promise;
}
}
});
这样可以解决您的路线。
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.