【问题标题】:Redirect in $transition.onBefore in ui-router在 ui-router 中的 $transition.onBefore 中重定向
【发布时间】:2017-09-29 16:08:03
【问题描述】:

我正在使用 angular 组件和 ui-router 1.0.0-beta.3。 这个版本不发送与改变状态相关的事件,有钩子。 在每次状态更改之前,我想重新验证用户是否已通过身份验证以及是否具有所需的角色。如果不是,我想将他重定向到登录页面。

$transitions.onBefore({}, $transition => {

        const $toState = $transition.$to();

        if ($toState.data && $toState.data.authentication) {

            PrincipalService.identity().then(() => {
                return true;
            }, () => {
                console.log('redirecting');
                let $state = $transition.router.stateService;

                // not works
                //return $state.target('home');
                //return $transition.router.stateService.t('login');
            });
        } else {
            return Promise.resolve(false);
        }
    });

如何使它工作?在这些情况下,我遇到了关于中断转换的错误。

我基于official documentation

【问题讨论】:

标签: angularjs angular-ui-router


【解决方案1】:

在您的条件中使用stateService 中的target

return $transition.router.stateService.target('login');

您可以在迁移示例 3 (https://ui-router.github.io/guide/ng1/migrate-to-1_0#state-change-events) 中看到它

【讨论】:

【解决方案2】:

解决方案:

使用 transitionTo(stateName);并返回 true 以停止当前转换。

$transition.router.stateService.transitionTo(stateName);
return true;

【讨论】:

    【解决方案3】:

    下面对我有用

      $transition.abort();
      state.go('abcd')
    

    【讨论】:

      猜你喜欢
      • 2015-06-30
      • 1970-01-01
      • 2015-06-08
      • 2018-02-04
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多