AngularJs身份验证如何避免闪烁
我正在用AngularJs构建一个应用程序,我想阻止用户在未登录时访问应用程序的内部页面 我有一个单独的应用程序用于登录loginApp和主应用程序mainApp。到目前为止,我在mainApp中为支持身份验证所做的工作如下:AngularJs身份验证如何避免闪烁,angularjs,authentication,Angularjs,Authentication,我正在用AngularJs构建一个应用程序,我想阻止用户在未登录时访问应用程序的内部页面 我有一个单独的应用程序用于登录loginApp和主应用程序mainApp。到目前为止,我在mainApp中为支持身份验证所做的工作如下: mainApp.config(['$routeProvider', function($routeProvider) { $routeProvider. when('/apage', { templateUrl: ..., cont
mainApp.config(['$routeProvider', function($routeProvider) {
$routeProvider. when('/apage', {
templateUrl: ...,
controller: ....,
resolve: {
load: function($q, AuthService){
var defer = $q.defer();
if(AuthService.notLoggedIn) {
defer.reject('user_not_logged_in');
} else {
defer.resolve();
}
return defer.promise;
}
}
}).run(function($rootScope, $window) {
$rootScope.$on('$routeChangeError', function(event, next, current, rejection) {
if (rejection === 'user_not_logged_in') {
$window.location = '/html/pages/login.html';
}
});
});
}])
我的mainApp的html页面由一个navbar组成,它由NavBarController模块中定义的控制器控制,还有一个包含视图指令的div部分页面
我的问题是,上面的代码对于部分页面很好,但对于导航栏却不行。Navbar正常加载,其控制器尝试调用后端,但由于用户未经身份验证,所以会弹出警报,然后重定向到登录页面,因此失败。为什么会这样?如何防止navbar控制器模块加载和显示?您可以使用类似的方法
@if (Request.IsAuthenticated) {
// code for your navbar which required user authentication
}
else {
// navbar for logged out user.
}
基于你的想法,我在导航栏上使用angular的ng if指令解决了我的问题。如果用户未通过身份验证,则会隐藏该用户。非常感谢。