Ui-Router否则使用ng-admin进行规则

时间:2017-06-28 16:29:03

标签: angularjs angular-ui-router ng-admin

我在角度应用中遇到了问题,我在其中集成了ng-admin以提供简单的管理面板。我还集成了身份验证,并希望在没有当前会话时指向登录状态。

Ng-admin本身设置ui-router的方法直接指向仪表板。 即使设置我自己的$urlRouterProvider.otherwise(...)我也无法强迫ui-router使用我的其他功能。

我试过这样:

$urlRouterProvider.otherwise(function ($injector) {
    console.log('Hello World?!');
    state.go('login');
});

但是从不打印console.log ......

我希望在运行任何仪表板代码之前拦截状态转换到仪表板,并首先将用户重定向到登录页面。

非常感谢任何提示和想法。

1 个答案:

答案 0 :(得分:0)

感谢@ user8175473指出我正确的方向。

我使用$on('$stateChangeStart)解决了问题,因为在执行某些状态代码后会调用$on('$stateChangeSuccess)

$rootScope.$on('$stateChangeStart', function(event, toState) {
    if(toState.name !== 'login' && !service.isLoggedIn()) {
        event.preventDefault();
        $state.go('login');
    }
});

请注意,完全取消状态转换需要event.preventDefault()