2015-07-28 9 views
5

I servizi REST e consumer di Java sono disponibili in Angularjs 1.3. I servizi sono basati su JSON e prevedono l'autenticazione BASIC (nome utente-password). In AgJs 1.3, ho usato il codice factory Base64 (trovato su google) per creare un token di autenticazione di base da username e password e in grado di utilizzare SUCCESSIVAMENTE i servizi.Come chiamare il servizio REST con autenticazione di base in Angularjs 2.0

Ho letto la classe HTTP nella documentazione di AgJs 2.0 ma non ho trovato alcuna informazione sull'autenticazione di base.

Qualcuno potrebbe fornire un codice di esempio per utilizzare i servizi REST in Angularjs 2.0 utilizzando l'autenticazione BASIC?

Grazie in anticipo!

I migliori saluti!

miei AgJs 1.3 Codice:

var url = "http://x.x.x.x:xxxx/data/" + numero;

$http.defaults.headers.common['Authorization'] = 'Basic ' + Base64.encode('username' + ':' + 'password'); 
$http.defaults.headers.common['Content-Type'] = 'application/json'; 

$http({ method: 'GET', url: url }). 
     success(function (data, status, headers, config) { 
      alert(data); 
     }). 
     error(function (data, status, headers, config) { 
      alert("error: " + data); 
     }); 
+0

Non so se sei lo stesso utente di questo [problema] (https://github.com/angular/angular/issues/3266) ma nel caso in cui potrebbe aiutare qualcun altro ... –

+0

Have un'occhiata a [questa risposta] (http://stackoverflow.com/a/34465070/995671) a una domanda simile. –

risposta

0

Dipende se si sta utilizzando il nuovo Angular2 http api, o qualcosa di esterno, come fetch.

In quest'ultimo caso si potrebbe fare qualcosa di simile, basta ricordarsi di avvolgere con la zona:

myHeaders = { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json', 
     'Authorization': 'Basic ' + Base64.encode('username' + ':' + 'password') 
    } 
return Zone.bindPromiseFn(fetch)(
      url, 
      { 
       method: 'GET', 
       headers: myHeaders, 
       body: JSON.stringify(myData) 
      }).then(
       r => {return r.json()} 
     ); 
1

ho solo fare un post da angular2 a un server che ha base auth e questo funziona:

sendAuthentification(credentials: string): Observable<any> { 
      var headers = new Headers(); 
      headers.append('Authorization', 'Basic ' + btoa('user:pass')); 

      return this.http.get("http://ip/yourpost", headers}); 
    } 

Spero che questa risponda alla tua domanda.