2016-04-04 20 views
1

Düğümlü/açık arka uçlu bir açısal uygulamasına sahibim. HttpProvider kullanarak bir kimlik doğrulama önleme uygulama girişiminde bulundum. Yerel depoda saklanan bir belirteç olduğunda, uygulama beklendiği gibi çalışır ve kısıtlı verileri arka uçtan alabilirim, ancak giriş yapıp ana görünümü yönlendirmeye çalıştığımda belirteci sildiğimde, bir TypeError alıyorum. : Tanımlanamayan 'üstbilgileri' okunamıyor. Eğer konfigürasyonda kod satırını açıklarsam, intertiperi kaydettirdim, hata gitti. Tanılayamadığım bazı nedenlerden dolayı, yerel depolama alanında bir belirteç olmadığı sürece uygulama çöküyor.

enter image description here

Kimlik keseni: Yapılandırma nesnesi Kayıtlı

angular.module('barmehealth') 
    .factory('authInterceptor', function(authToken) { 

    return { 
     request: function(config) { 
     var token = authToken.getToken(); 

     if (token) { 
      config.headers.Authorization = 'Bearer ' + token; 

      return config; 
     } 
     }, 
     response: function(response) { 
     return response; 
     } 
    }; 
    }); 

: Ben kodu değiştirerek sorunu çözmek için çalıştı

$httpProvider.interceptors.push('authInterceptor'); 

aşağıdaki gibidir:

.factory('authInterceptor', function(authToken) { 

    return { 
    request: function(config) { 
     var currentToken = authToken.getToken(); 
     var token = currentToken ? currentToken : null; 

     if (token) { 
     config.headers.Authorization = 'Bearer ' + token; 

     return config; 
     } 
    }, 
    response: function(response) { 
     return response; 
    } 
    }; 
}); 

cevap

1

Auth önleme cihazınız sadece koşullu olarak config değerini döndürür. Bu mantıksal bir hatadır. Böyle Fix it: Bu önemli

request: function(config) { 
    var token = authToken.getToken(); 

    if (token) { 
    config.headers.Authorization = 'Bearer ' + token; 
    } 

    return config; 
} 

bir if bloğun içine tek return deyimi koymak değil. Aksi takdirde, eğer bir jeton yoksa, hiçbir konfigürasyon iade edilmeyecek ve işler tüylenecektir. Orada hiçbir belirteç olup config iade edildiğinde, açısal serverRequest yöntem config.headers erişmeye çalıştığında ve bunu dönmedi çünkü config tanımsız olduğunu bulur çünkü

hata atılıyor.

+1

Oh adamım, ne aa bir hata. Teşekkürler, açıkçası beklendiği gibi çalışır. – Aaron

İlgili konular