检查routeProvider中的登录状态

时间:2016-06-29 16:53:51

标签: angularjs

我正在开展一项Angular项目,但我遇到了一些问题,我很感激任何帮助,因为我真的输了。基本上我需要检查用户是否已登录,如果是,则不应该允许他访问某个视图/路由,这里是我使用的代码:

'use strict';

angular.module('testApp')
  .config(function ($routeProvider) {
    $routeProvider
      .when('/registroVisitante', {
        template: '<registro-visitante></registro-visitante>',
        resolve: {
          "check": function(Auth, $location) {
            console.log(Auth.isLoggedIn());
            if (!Auth.isLoggedIn()) {
              alert("Access allowed");
            } else {
              $location.path('/'); //redirect user to home.
              alert("Access denied");
            }
          }
        }
      });
  });

问题本身就是,这实际上是有效的,但只有当我尝试通过锚点击或ng-click或其他任何方式访问路线时,但是,当我在地址栏中键入路线时,它允许我访问但是它不应该,任何人都知道为什么?

1 个答案:

答案 0 :(得分:1)

试试这个

angular.module('testApp')
    .config(function ($routeProvider) {
        $routeProvider
            .when('/registroVisitante', {
                template: '<registro-visitante></registro-visitante>',
                resolve: {
                    "check": function (Auth, $location) {
                        Auth.isLoggedIn(function (response) {
                            console.log(response);
                            if (response) {
                                $location.path('/'); //redirect user to home.
                            }
                        });
                    }
                }
            });
    });

问题是它是一个异步请求,也许当它到达时它是否未定义。