陷入错误:[$ injector:unpr]未知提供商

时间:2016-09-11 10:35:28

标签: angularjs

基本上,我想在登录前进行用户身份验证。因此,我创建了一个身份验证工厂和用户登录控制器来实现我的目标。但是,将工厂注入控制器时会引发错误。我不知道在我的程序中导致此错误的位置。谁能给我一个提示?

enter image description here

我的工作:

(function () {
    'use strict';

    angular
        .module('app')
        .factory('AuthenticationService', AuthenticationService);

    AuthenticationService.$inject = ['$http', '$cookieStore', '$rootScope', '$timeout', 'UserService'];
    function AuthenticationService($http, $cookieStore, $rootScope, $timeout, UserService) {
        var service = {};

        service.Login = Login;
        service.SetCredentials = SetCredentials;
        service.ClearCredentials = ClearCredentials;

        return service;

        function Login(username, password, callback) {


            $http.post('/api/authenticate', { username: username, password: password })
               .success(function (response) {

                    // actually calling SetCredentials in logincontroller
                   callback(response);
               });

        }

        function SetCredentials(username, password) {
            var authdata = Base64.encode(username + ':' + password);

            $rootScope.globals = {
                currentUser: {
                    username: username,
                    authdata: authdata
                }
            };

            $http.defaults.headers.common['Authorization'] = 'Basic ' + authdata; // jshint ignore:line
            $cookieStore.put('globals', $rootScope.globals);
        }

        function ClearCredentials() {
            $rootScope.globals = {};
            $cookieStore.remove('globals');
            $http.defaults.headers.common.Authorization = 'Basic';
        }
    }

    // Base64 encoding service used by AuthenticationService
    var Base64 = {
            // encode and decode
            // ignore detail this time
       }

})();

我的控制器:

(function () {
    'use strict';

    angular
        .module('app')
        .controller('LoginController', LoginController);

    LoginController.$inject = ['$location', 'AuthenticationService'];
    function LoginController($location, AuthenticationService) {
        var vm = this;

        vm.login = login;

        (function initController() {
            // reset login status
            AuthenticationService.ClearCredentials();
        })();

        function login() {
            vm.dataLoading = true;

            AuthenticationService.Login(vm.username, vm.password, function (response) {
                if (response) {
                    AuthenticationService.SetCredentials(vm.username, vm.password);
                    $location.path('/');
                } else {
                    console.log('Fail to log in');
                    vm.dataLoading = false;
                }
            });
        };
    }

})();

0 个答案:

没有答案