【问题标题】:stateChangeStart - AngularJSstateChangeStart - AngularJS
【发布时间】:2018-04-30 22:27:18
【问题描述】:

我正在使用 $stateChangeStart 进行登录。

在我的网站中,我有一些页面可供用户在未登录时访问。

我编写此代码用于注销和检查某些页面的访问权限。

但是当用户转到页面时我有问题(不需要用户验证)

$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
            console.log('TS', toState, 'TP', toParams, 'FS', fromState, 'FP', fromParams)
            if (!$rootScope.currentUser) {
                console.log('NO USER')
                if (toState.name !== 'login') {
                    event.preventDefault();
                    console.log('SOME ROUTE');
                    $state.go("login");
                }
                else if (toState.name !== 'about' ) {
                    console.log("about no user")
                    $state.go("about");
                }

            }
        });

知道如何使用 $stateChangeStart 来做到这一点

这与 else if 不起作用。

谢谢!

【问题讨论】:

    标签: javascript angularjs logging


    【解决方案1】:

    最好的做法是在每条路由上(在配置时)指定是否需要登录,

    .state("users", {
       url: "/users",
       data: {
          requiresLogin: true
       }
    })
    

    然后您将能够检查状态是否需要在每次导航时登录,类似这样:

    $rootScope.$on('$stateChangeStart', (event, toState, toParams, fromState, fromParams, options) => { 
        if(toState.data && toState.data.requiresLogin) {
           // validate the user here, if not valid navigate to Login
        }
    });
    

    作为奖励,您可以利用数据继承并指定需要使用abstract 状态登录的路由范围。

    e.state("users", {
        abstract: true,
        url: "/users",
        data: {
            requiresLogin: true
        }
    })
    .state("users.main", {
        url: "/",
        template: '<users-main></users-main>'
    })
    .state("users.page2", {
        url: "/page2",
        template: '<users-page2></users-page2>'
    })
    

    在上面的示例中,作为用户子状态的每个状态(其名称中有 users. 前缀)都将继承 data 属性,因此需要登录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      相关资源
      最近更新 更多