2014-02-24 5 views
2

POST을 사용하여 angularjs 인증을 시도하고 있습니다. 내 코드에 게으른 로딩도 포함됩니다. POST알 수없는 제공 업체 오류 AngularJs

코드가 응용 프로그램에 '권한'팩토리를 삽입하는 데 문제가 있습니다. 내 루트 디렉토리 아래

enter image description here

app.js로 :

(function() 
{ 
    var myApp = angular.module('myApp',['ngRoute']); 
    var roleId = 5; 
    var permissionList = {}; 

    myApp.config(function($routeProvider, $controllerProvider, $filterProvider, $provide, $compileProvider, $httpProvider) 
     { 
      myApp.controllerProvider = $controllerProvider; 
      myApp.compileProvider = $compileProvider; 
      myApp.routeProvider  = $routeProvider; 
      myApp.filterProvider  = $filterProvider; 
      myApp.provide   = $provide; 

      $httpProvider.responseInterceptors.push('securityInterceptor'); 

      $routeProvider 
       .when('/', { 
        templateUrl:'app/login/login.html', 
        resolve:{ 
         deps: function($q, $rootScope) { 
          var deferred = $q.defer(); 
          // Add dependencies here 
          var dependencies = 
           [ 

            'app/services/services.js', 
            'app/directives/directives.js', 
            'app/login/login.js', 

           ]; 

          $script(dependencies, function() 
          { 
           // all dependencies have now been loaded by $script.js so resolve the promise 
           $rootScope.$apply(function() 
           { 
            deferred.resolve(); 
           }); 
          }); 

          return deferred.promise; 
         } 
        }, 
        permission: 'login' 
       }); 
     }); 

    myApp.provider('securityInterceptor', function() { 
     this.$get = function($location, $q) { 
      return function(promise) { 
       return promise.then(null, function(response) { 
        if(response.status === 403 || response.status === 401) { 
         $location.path('partials/unauthorized'); 
        } 
        return $q.reject(response); 
       }); 
      }; 
     }; 
    }); 

    // Get User Roles and Permissions from server 
    angular.element(document).ready(function() { 
     $.get('b1.0/../api/index/user-roles', function(data) { 
      userRoles = data; 
     }); 

     $.post('b1.0/../api/index/user-permissions', {roleId:roleId}, function(data) { 
      permissionList = data; 
     }); 
    }); 

    myApp.run(function(permissions) { 
     permissions.setPermissions(permissionList) 
    }); 

    // Tried this but still not working 
    /*myApp.run(['permissions', function(permissions){ 
     permissions.setPermissions(permissionList); 
    }]);*/ 

})(); 

appBootstrap.js :

$script(['app/app.js'], function() 
{ 
    angular.bootstrap(document, ['myApp']); 
}); 

appMain.js :

var myApp = angular.module('myApp'); 

myApp.controller('mainAppCtrl', function($scope, $location, permissions) { 
    $scope.$on('$routeChangeStart', function(scope, next, current) { 
     var permission = next.$$route.permission; 
     if(_.isString(permission) && !permissions.hasPermission(permission)) 
      $location.path('/unauthorized'); 
    }); 
}); 

services.js :

angular.module('myApp') 
    .factory('permissions', function ($rootScope) { 
     var permissionList; 
     return { 
      setPermissions: function(permissions) { 
       permissionList = permissions; 
       $rootScope.$broadcast('permissionsChanged') 
      }, 
      hasPermission: function (permission) { 
       permission = permission.trim(); 
       return _.some(permissionList, function(item) { 
        if(_.isString(item.Name)) 
         return item.Name.trim() === permission 
       }); 
      } 
     }; 
    }); 

directives.js :

angular.module('myApp').directive('hasPermission', function(permissions) { 
    return { 
     link: function(scope, element, attrs) { 
      if(!_.isString(attrs.hasPermission)) 
       throw "hasPermission value must be a string"; 

      var value = attrs.hasPermission.trim(); 
      var notPermissionFlag = value[0] === '!'; 
      if(notPermissionFlag) { 
       value = value.slice(1).trim(); 
      } 

      function toggleVisibilityBasedOnPermission() { 
       var hasPermission = permissions.hasPermission(value); 

       if(hasPermission && !notPermissionFlag || !hasPermission && notPermissionFlag) 
        element.show(); 
       else 
        element.hide(); 
      } 
      toggleVisibilityBasedOnPermission(); 
      scope.$on('permissionsChanged', toggleVisibilityBasedOnPermission); 
     } 
    }; 
}); 

Here 내 업로드 된 파일입니다.

내가 점점 오전 오류이

http://errors.angularjs.org/1.2.13/ $ 인젝터/unpr? P0 = permissionsProvider % 20 % 3C- %의 20permissions이다

사람이 잘못 여기에 무슨 일이 일어나고 있는지 말해 줄 수 ??

업데이트 1 : @Chandermani에 의해 제안 번을 myApp를 선언 한 후 지금이 오류가 너무

http://errors.angularjs.org/1.2.13/ $ 인젝터/nomod P0 =을 myApp이

+0

디 오류 링크로 이동합니까? "이 오류는 $ injector가 필수 종속성을 해결할 수 없기 때문에 발생합니다.이를 수정하려면 종속성이 올바르게 정의되고 철자가 올바른지 확인하십시오 (예 :"오류가 발생한 위치를 지정하지 않고 많은 코드를 제공 했으므로, 문제가 어디 있는지 모르겠습니다. – JeffryHouser

+0

예 재검사했지만 문제가 아님 – VishwaKumar

+1

Chandermani와 관련이 있어야합니다. – VishwaKumar

답변

3

에 refrence 모든 파일이어야한다.당신이 Require.js

처럼 당신이 뭔가를 사용해야 실행시 파일을 해결하려는 경우가 런타임에 파일을 포함하지 않는 경우에만

<script type="text/javascript" rel="javascript" src="app/vendor/jquery-2.1.0.min.js"></script> 
<script type="text/javascript" rel="javascript" src="app/vendor/angular.min.js"></script> 
<script type="text/javascript" rel="javascript" src="app/vendor/angular-route.js"></script> 
<script type="text/javascript" rel="javascript" src="app/script.js"></script> 
<script type="text/javascript" rel="javascript" src="app/appBootstrap.js"></script> 
<script type="text/javascript" rel="javascript" src="app/appMain.js"></script> 

각 모듈 종속성을 참조하는 HTML, 그냥, 인스턴스를 해결


참고 : HTML 본문 태그 자체에 ng-view 전환되지 않도록, 몸 내부 사업부를 만들고 몸에 퍼팅 흙손질 때문에 다른 모든 것들을 index.html 페이지에서 그것을 ng-view을 넣어

+0

최근에 구현 한 후에 다른 문제가 있습니다. 이 게시물에 대한 아이디어가 있습니까? http://stackoverflow.com/questions/22096305/authorization-service-fails-on-page-refresh-in-angularjs – VishwaKumar

1

내가 myApp의 선언을 볼 수있다 두 번

app.js

var myApp = angular.module('myApp',['ngRoute']); 
,

appMain.js는 :

var myApp = angular.module('myApp',['ngRoute']); 

이것은 모듈을 다시 것입니다. 그래서 두 번째는 지수

var myApp = angular.module('myApp');

+0

여전히 동일한 오류가 발생합니다. – VishwaKumar

관련 문제