如何在正确的标准中处理“角度路线”中的不同场景?

时间:2016-09-18 08:09:50

标签: angularjs node.js authentication angular-routing

我正在使用nodejs开发angular应用程序。在这里,我只是与以下场景混淆。我需要最佳实践知道处理所有这些:

route

  1. 如何在没有身份验证的情况下显示某些页面?
  2. 如何在认证成功后显示其他一些页面?
  3. 如何重新定位错误的网址(不在应用中) - 没有身份验证?
  4. 如何在身份验证后将错误的网址重定向到主页或背页?
  5. 所有这些情况都是在fronend或后端处理?这是正确的方法吗?

    这里是样品:

    从不需要测试身份验证:

    .when('/login', {
        templateUrl : 'app/views/pages/login.html',
        controller : 'mainController',
        controllerAs: 'login'
    })
    
    .when('/login', {
        templateUrl : 'app/views/pages/createUser.html',
        controller : 'userController',
        controllerAs: 'user'
    })
    

    始终需要身份验证:

    .when('/login', {
        templateUrl : 'app/views/pages/showProduct.html',
        controller : 'productController',
        controllerAs: 'product'
    })
    .when('/login', {
        templateUrl : 'app/views/pages/showStatics.html',
        controller : 'staticController',
        controllerAs: 'static'
    })
    
    在使用错误的网址进行身份验证之前

    .when('/login', {
        templateUrl : 'app/views/pages/testingWrong'
    })
    

    使用错误的网址进行身份验证后:

    .when('/static', {
        templateUrl : 'app/views/pages/showStatics.html',
        controller : 'staticController',
        controllerAs: 'static'
    })
    .when('/static/wrong', {
        templateUrl : 'app/views/pages/showStatics.html',
    })
    

    如果有教程,请与我分享。或者如果有解决方案,请发布详细信息以便了解。

    先谢谢。

1 个答案:

答案 0 :(得分:2)

您需要添加解析函数参数,如下所示

when('products', {
   templateUrl : 'app/views/pages/showProduct.html',
   controller : 'productController',
   controllerAs: 'product',
   resolve: function($q, $location, Auth) {
      var deferred = $q.defer();
      deferred.resolve();
      if (!Auth.isLoggedIn()) {
         $location.path('/login');
      }
      return deferred.promise;
   }
});

Auth将是一些保持用户记录状态的服务。 希望这会对你有所帮助。