2016-11-06 14 views
0

にresponse.entityメッセージを取得することはできません。私は、基本認証呼び出しを受け入れるか拒否するためにフィルタを使用するjax-rs restapiアプリケーションを開発しました 私は郵便配達で私のアプリケーションをテストして正常に動作します。基本的な認証のためにユーザー/パスを渡さない場合、またはユーザー/パスが正しい場合にすべてがOKである間に間違っている場合は、エラーメッセージが表示されます。私は、ヘッダーのuser/passを渡す$ httpサービスを呼び出すangularjsサービスを作成しました。ユーザー/パスが間違っている場合、私は、このエラーメッセージ

SyntaxError: Unexpected token u in JSON at position 0 

の代わりに、私はフィルタに書いたカスタムを得ながら、ユーザ/パスは正しいデータが通話応答OKであれば

Response unathourizedStatus = Response 
     .status(Response.Status.UNAUTHORIZED) 
     .entity("user cannot access the resource") 
     .build(); 
requestContext.abortWith(unathourizedStatus); 

はこれがあります私の角度サービス

app.service("GeafimServiceBasicAuth", function($http, $base64) { 
    var self = this; 

    // Read all Registry Type 
    self.getRegistryTypeBA = function(username, password) { 

     console.log("service user " + username); 
     console.log("service pass " + password); 

     var auth = $base64.encode(username + ":" + password); 
     // var headers = {"Authorization": "Basic " + auth}; 

     console.log("service auth " + auth); 


     var promise = $http({ 
      method : 'GET', 
      url : "webapi/basicauth/registrytype", 
      headers : { 
       "Authorization" : "Basic " + auth 
      } 
     }).then(function(response) { 
      return response.data; 
     }); 
     return promise; 
    } 

、これは私が

サービスを呼び出すコントローラーです
GeafimCtrlViewBA.$inject = [ "$http", "GeafimServiceBasicAuth" ]; 
function GeafimCtrlViewBA($http, GeafimServiceBasicAuth) { 

    var vm = this; 

    vm.error = false; 
    vm.viewRegistryType = {}; 

    vm.getRegTypeBA = function(username, password) { 
     // Get registry data using a Service with Basic Auth 
     console.log("user " + username); 
     console.log("pass " + password); 
     GeafimServiceBasicAuth.getRegistryTypeBA(username, password).then(
       function(data) { 
        vm.viewRegistryType = data; 
       }, function(err) { 
        console.log("error " + err) 
       }); 
    } 

console.logを書き込むと、エンティティに書き込まれたメッセージに構文エラーが表示されない

どうすればいいですか?

おかげ

+0

と指定してください。生の応答を表示します。 – cojack

+0

angular.min.js:103 GETにhttp:// localhost:8080/geafimrest/WEBAPI/BASICAUTH/registrytype 401(無許可)(匿名関数)angular.min.js @:angular.min.js @ 103N:99(匿名angular.min.js @機能):96(匿名関数)@ angular.min.js:131 $ evalをangular.min.js @:145はangular.min.js @ダイジェスト$:142 $が適用されます@ angular.min.js :146(匿名関数)angular.min.js @:276Sfする@ angular.min.js:angular.min.js @ 37D:37 angular.min.js:118にSyntaxError:予期しないトークンUをJSONでの位置0 – zanza67

+0

でJSON.parse() at xc(angular.min.js:16) at dc(angular.min.js:91) (angular.min.js:92 )q(angular.min.js:7) GDで) (angular.min.js:92) fにおける(angular.min.js:94)angular.min.jsで:131 M $の評価で。(angular.min.js:145)。 mにおける$ダイジェスト(angular.min.js:142)私は応答を意味 – zanza67

答えて

0

$httpサービスはJSON.parseにメッセージをしようとエラーになっています。代わりに、型を"text/plain"

Response unathourizedStatus = Response 
    .status(Response.Status.UNAUTHORIZED) 
    .type("text/plain") 
    .entity("user cannot access the resource") 
    .build(); 
requestContext.abortWith(unathourizedStatus); 
+0

georgeawgありがとうございました。 – zanza67

+0

cojackにも感謝しています:) – zanza67

関連する問題