2016-11-06 2 views
0

Я новичок в angularjs. Я разработал приложение jap-rs restapi, которое использует фильтры для принятия или отклонения основного запроса на проверку подлинности. Я протестировал свое приложение в почтальоне, и он отлично работает. Я получил сообщение об ошибке, если я не пропускаю пользователя/пароль для базовой проверки подлинности или если они ошибаются, когда все в порядке, когда пользователь/пароль правильные. Я написал услугу angularjs, которая вызывает службу $ http, проходящую в заголовке user/pass. если пользователь/передача в порядке ответа вызова правильные данные, а если пользователь/проход ошибаетесь я получил сообщение об ошибке

SyntaxError: Unexpected token u in JSON at position 0 

вместо обычая я написал в фильтре

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: 103n @ angular.min.js: 99 (анонимно функция) @ angular.min.js: 96 (анонимная функция) @ angular.min.js: 131 $ eval @ angular.min.js: 145 $ digest @ angular.min.js: 142 $ apply @ angular.min.js : 146 (анонимная функция) @ angular.min.js: 276Sf @ angular.min.js: 37d @ angular.min.js: 37 angular.min.js: 118 SyntaxError: Неожиданный токен u в JSON в позиции 0 – zanza67

+0

at JSON.parse () на хс (angular.min.js: 16) на постоянном токе (angular.min.js: 91) на angular.min.js: 92 на Q (angular.min.js: 7) по адресу gd (angular.min.js: 92) по f (angular.min.js: 94) at angular.min.js: 131 at m. $ Eval (angular.min.js: 145) at m. $ Digest (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

Смежные вопросы