2

OpenApi、SecureApi、TokenHandlerの3つのサービスを作成しました。SecureApiサービスのTokenHandlerサービスを利用したい。認証が行われると、コントローラーコードはTokenHandler.Set()メソッドにトークンを設定します。そして、SecureApiに以下のようにtokenHandler.get()を計算させたい。出来ますか。現在、以下のエラーが発生しています:-

編集:-以下のエラーを修正しました(以下のコードも更新しましたが、私のトークンはまだヘッダーの一部として通過していません:()

不明なプロバイダー:tokenHandlerProvider <-tokenHandler <-SecureApi

コード:-

/* Services */
angular.module('MyApp.services', ['ngResource'])
    .factory('OpenApi', function ($resource) {

        var openApi = $resource(
            '/api/:controller/:id',
            [],
            {
                postLogOn: { method: 'POST', params: { controller: 'Account' } },
                postCustomer: { method: 'POST', params: { controller: 'Employee' } }
            }
        );
        return openApi;
    })

.factory('TokenHandler', function () {
    var tokenHandler = {};
    var token = "none";

    tokenHandler.set = function (newToken) {
        token = newToken;
    };

    tokenHandler.get = function () {
        return token;
    };
    return tokenHandler;
})


   .factory('SecureApi', ['$resource', 'TokenHandler', function(res, tokHandler) { 
       var secureApi = $resource(
        '/api/:controller/:id',
        [],
        {
    getInsightCustomer: { method: 'GET', params: { controller: 'MyCustomer' }, headers: {Authorization_Token: tokenHandler.get()} }
        }
    );
       return secureApi;
   }]);
4

1 に答える 1

1

私はAngularJSgooglegroupsでこれの答えを得ました:-

https://groups.google.com/forum/?hl=en&fromgroups=#!topic/angular/jfttVnvga9M

上記のコードでは構文エラーでした。

TokenHandlerサービスには大文字のTがありますが、SecureApiサービスは小文字のtのtokenHandlerを「要求」しています。一般的には、より良い方法です。jsを最小化して配列インジェクション形式を使用する場合は不可欠です。これにより、そのサービスのパラメーター名として好きなものを使用することもできます。例えば:

.factory('SecureApi'、['$ resource'、'TokenHandler'、function(res、tokHandler){...}]);

于 2012-09-26T04:16:14.643 に答える