0

Yeoman を使用してセットアップした AngularJS アプリがあります。アプリでは、 の背後にある API 呼び出しを行う必要がありますHTTP Basic Authenticationこのチュートリアルに従って、HTTP ヘッダーを変更し、ユーザー名とパスワードをエンコードする方法を見つけました。Base64.encodeしかし、 API サービスから呼び出す方法がわかりません。私が試したことはすべて、ReferenceError: Base64 is not definedエラーが発生し続けます。

私のAPIサービスBase64.encode()は、エラーをスローする行です:

// app/scripts/api.js
angular.module('api.ClientApp', ['base64']).
    service('$api', function($http, $q, $cookieStore, $rootScope, $location, $window, $sniffer) {
        var $api = this;

        this.set_http_auth = function(obj) {
            if(obj){
                $http.defaults.headers.common['Authorization'] = 'Basic ' +
                    Base64.encode(obj.username + ':' + obj.password);
            } else {
                delete $http.defaults.headers.common['Authorization'];
            }
        };
    });

Base64 ファクトリー:

// app/scripts/services/Base64.js
angular.module('base64', [])
    .factory('Base64', function () {
        return {
            encode: function (input) {
                var output = "";
                // ...
                return output;
            },

            decode: function (input) {
                var output = "";
                // ...
                return output;
            }
        };
    });

インデックス.html:

<!-- app/index.html -->
<script src="scripts/app.js"></script>
<script src="scripts/services/Base64.js"></script>
<script src="scripts/api.js"></script>
<script src="scripts/controllers/signin.js"></script>
4

1 に答える 1

4

この行で

service('$api', function($http, $q, $cookieStore, $rootScope, $location, $window, $sniffer) {

Base64サービスを注入する必要があります-つまり

service('$api', function($http, $q, $cookieStore, $rootScope, $location, $window, $sniffer, Base64) {
于 2013-10-15T19:45:22.133 に答える