Angularjs 用户界面路由器规则与ng管理

Angularjs 用户界面路由器规则与ng管理,angularjs,angular-ui-router,ng-admin,Angularjs,Angular Ui Router,Ng Admin,我在angular应用程序中遇到了一个问题,我集成了ng admin以提供一个简单的管理面板。我还集成了身份验证,并希望在没有当前会话时指向登录状态 Ng admin本身将ui路由器的其他方法设置为直接指向仪表板。 即使在设置我自己的$urlRouterProvider.otherwise(…)时,我也无法强制ui路由器使用我的otherwise函数 我这样试过: $urlRouterProvider.otherwise(function ($injector) { console.lo

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

Ng admin本身将ui路由器的其他方法设置为直接指向仪表板。 即使在设置我自己的
$urlRouterProvider.otherwise(…)
时,我也无法强制ui路由器使用我的otherwise函数

我这样试过:

$urlRouterProvider.otherwise(function ($injector) {
    console.log('Hello World?!');
    state.go('login');
});
但是console.log从未打印过

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


非常感谢@user8175473为我指明了正确的方向

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

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

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

当我在angular的配置阶段设置路由状态时,您是否尝试使用$on(“stateChangeSuccess”),我不确定将其放置在何处。。。?我可以在
角度运行(…)
块中使用它吗?您可以在主模块控制器中使用它“主”控制器位于ng admin中,我只有特定状态的控制器,在第一次加载应用程序时不会执行。您是否可以尝试对特定状态使用resolve函数,然后才能检查会话并更改状态?