【发布时间】:2016-08-01 12:45:21
【问题描述】:
如果用户未登录,我想确保用户在继续访问他/她尝试访问的任何组件之前正确登录。发送他们登录。
我的想法是检查根路由器中的$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
-
嗯,是的,我想你是完全正确的。运行块可能是放置这个的理想场所。如果您想发布答案,请将其标记为正确。
-
什么? $routerOnActivate 如何在 Angular.run 中“完美运行”?它是一种组件生命周期方法。
-
鉴于检查在运行块中,因此不需要 $routerOnActivate。而是可以尽快调用负责身份验证检查的函数
-
刚刚添加了一个比在页面加载时执行身份验证/授权检查更好的解决方案。
标签: angularjs authentication ngcomponentrouter angular-component-router