我在一个angular应用程序中遇到了一个问题,在那里我集成了ng-admin来提供一个简单的管理面板。我还集成了身份验证,并希望在没有当前会话时指向登录状态。
Ng-admin本身将ui-router的sets方法设置为直接指向仪表板。即使在设置自己的$urlRouterProvider.otherwise(...)时,我也不能强制ui-router使用我的其他函数。
我是这样尝试的:
$urlRouterProvider.otherwise(function ($injector) {
console.log('Hello World?!');
state.go('login');
});但是console.log永远不会打印出来。
在运行任何仪表板代码之前,我想截取到仪表板的状态转换,并首先将用户重定向到登录页面。
任何提示和想法都是非常感谢的。
发布于 2017-06-30 16:08:14
感谢@user8175473为我指明了正确的方向。
我已经用$on('$stateChangeStart)解决了这个问题,因为$on('$stateChangeSuccess)是在一些状态代码执行后调用的。
$rootScope.$on('$stateChangeStart', function(event, toState) {
if(toState.name !== 'login' && !service.isLoggedIn()) {
event.preventDefault();
$state.go('login');
}
});请注意,需要使用event.preventDefault()来完全取消状态转换。
https://stackoverflow.com/questions/44808041
复制相似问题