Angularjs ui路由器拒绝解决如何避免加载模板
我有这个密码Angularjs ui路由器拒绝解决如何避免加载模板,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我有这个密码 //Setting up route angular.module('my') .config(['$stateProvider',function($stateProvider) { // Check if the user is just logged var checkLoggedOut = function($http) { /* if the user is just logged the server s
//Setting up route
angular.module('my')
.config(['$stateProvider',function($stateProvider) {
// Check if the user is just logged
var checkLoggedOut = function($http) {
/* if the user is just logged the server send a Forbidden status 403*/
return $http.get('/loggedout');
};
// Check if the user is logged
var checkLoggedIn = function($http) {
return $http.get('/loggedin');
};
// states for my app
$stateProvider
.state('user', {
abstract: true,
templateUrl: 'users/views/index.html',
resolve: {
loggedin: checkLoggedIn
}
})
.state('user_register', {
url: '/user/register',
templateUrl: 'users/views/register.html',
resolve: {
loggedin: checkLoggedOut
},
controller:'UserRegisterCtrl'
});
}
]);
如果用户刚刚登录,则无法转到状态用户注册
但模板仍在加载中
这是通缉犯的行为吗
有办法避免吗
使现代化
也许我的问题会被误解
我想知道,如果解析被拒绝,是否有办法避免加载模板我的意思是,为什么在解析被拒绝时加载模板?如果解析失败,则不应加载模板
到头来
首先,进行REST调用以检查用户是否在每次状态转换时都登录,这可能会很昂贵。最好将用户的状态存储在浏览器中 第二,关于您要问的问题:您可以创建一个事件处理程序来侦听$stateChangeStart事件。在此处理程序中,您可以检查用户是否已登录,以及他们是否能够访问状态
此链接应有助于您的checkLoggedIn功能必须管理用户未经身份验证的情况。它可以使用$state.go或$location将他重定向到相应的状态。mmm我不是问如何做,而是问如果解析被拒绝,到底为什么会加载模板,以及是否有办法避免我给你的抱歉-1
.factory('httpInterceptor', ['$q','$location',function ($q, $location) {
return {
'response': function(response) {
if (response.status === 401) {
$location.path('/signin');
return $q.reject(response);
}
if (response.status === 403) {
$location.path('/');
return $q.reject(response);
}
return response || $q.when(response);
},
'responseError': function(rejection) {
if (rejection.status === 401) {
$location.path('/signin');
return $q.reject(rejection);
}
if (rejection.status === 403) {
$location.path('/');
return $q.reject(rejection);
}
return $q.reject(rejection);
}
};
}