Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 检查用户是否在加载模板之前登录,根据用户是否登录,执行2个不同的操作_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 检查用户是否在加载模板之前登录,根据用户是否登录,执行2个不同的操作

Angularjs 检查用户是否在加载模板之前登录,根据用户是否登录,执行2个不同的操作,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在学习angular.js和ui路由器。所以我想了解: 1.如何在一种状态下执行两种不同的操作取决于用户是否登录。 2.在几个状态中,如果用户未登录,则重定向到主页 下面是一个例子: 有一个服务“Atuhentication”统计授权用户。但我无法将其加载到module.config(),因为它会出错 $stateProvider .state('home', { // if user is logged in go to state "chat" /

我正在学习angular.js和ui路由器。所以我想了解: 1.如何在一种状态下执行两种不同的操作取决于用户是否登录。 2.在几个状态中,如果用户未登录,则重定向到主页

下面是一个例子: 有一个服务“Atuhentication”统计授权用户。但我无法将其加载到module.config(),因为它会出错

$stateProvider
    .state('home', {
        // if user is logged in go to state "chat"
        // else go to state "welcome"
    })
    .state('chat', function(){
        // if user is not logged in redirect to home page
    })
我试图在州控制器中创建它,但这是一种肮脏的方式,因为它加载模板和控制器,然后检查用户是否登录,如果不登录,则重定向


因此,亲爱的朋友们,请指明正确的移动方向

您可以随时使用
$stateChangeStart
事件挂起并阻止状态更改,该事件在状态更改时正在广播。您可以在通过应用程序可用的任何顶级控制器(如添加到
body
标记的控制器)中添加此事件侦听器,也可以使用
$rootScope
在任何服务中添加此事件侦听器代码,如下所示:

var protectedStates = ['home', 'chat'];

$rootScope.$on('$stateChangeStart', function(event, toState, toParams) {
     // See if state being transitioned needs to be access checked
     if (protectedStates.indexOf(toState.name) > -1) {
         if (!userLoggedIn) {
              // Prevent the current state from being changed
              event.preventDefault();
              $state.go('home');       // go to home page or login page.
         }
     }
});
更多参考:.$state

希望这有帮助

谢谢,

SA

是不是
受保护状态。索引(toState)
?谢谢您,先生。你帮了我