我想确保用户在继续访问他/她想要访问的任何组件之前,确保它们已正确登录,如果他们未登录,请发送它们以登录。
我的想法是在根路由器中检查$routerOnActivate
。对我来说,哪个子路线可以解决这个问题。
但是,似乎没有发生,如果我只是尝试登录的东西。例如:
angular
.module('app')
.config(function($locationProvider) {
$locationProvider.html5Mode(true);
})
.value('$routerRootComponent', 'app')
.component('app', {
templateUrl:'landing.html',
controller: MainController,
$routeConfig: [
{ path: '/', name: 'Dashboard', component: 'dashboard', useAsDefault: true },
{ path: '/media', name: 'Media', component: 'media'}
...
]
});
function MainController(){
this.$routerOnActivate = function(next, previous){
console.log('activated', next, previous);
};
}
相同的代码,如果this.$routerOnActivate
作品我把它在任何它们在routeConfig指定的成分分析。然而,显然我不想在每个组件中进行相同的检查,而是在全球范围内解决它。
1.5的方法是什么?
什么执行您的支票在页面上加载?这将在angular.run中完美运行。如果你想处理会话到期,你可以添加一个拦截器到所有的请求,并观看一个401 – Walfrat
嗯,是的,我想你是完全正确的。运行块可能是一个完美的地方,把这个。如果您想发布答案,请将其标记为正确。 –
什么? $ routerOnActivate在Angular.run中如何“完美地工作”?这是一种组件生命周期方法。 – mikkelrd