Angular 8: невозможно отправить авторизацию с сервисом - PullRequest
0 голосов
/ 20 февраля 2020

Я хочу отправить следующее «Авторизация» через сервис.

Authorization :: Basic c3ByaW5nLXNlY3VyaXR5LW9hdXRoMi1yZWFkLXdyaXRlLWNsaWVudDpzcHJpbmctc2VjdXJpdHktb2F1dGgyLXJlYWQtd3JpdGUtY2xpZW50LXBhc3N3b3JkMTIzNA==

В сервисе я написал следующий код:

constructor(
        private http: HttpClient
    ) {
        this.header_auth = {
          headers: new HttpHeaders()
            .set('Authorization',  "Basic c3ByaW5nLXNlY3VyaXR5LW9hdXRoMi1yZWFkLXdyaXRlLWNsaWVudDpzcHJpbmctc2VjdXJpdHktb2F1dGgyLXJlYWQtd3JpdGUtY2xpZW50LXBhc3N3b3JkMTIzNA==")
        }
    }

getToken() {
        return this.http.post(this.rootUrl + "oauth/token?client_id=spring-security-oauth2-read-write-client&password=XXXXX&username=XX@XXX.com&grant_type=password", this.header_auth);
    }

Я также использовал этот код: public basic: any = 'Basic c3ByaW5nLXNlY3VyaXR5LW9hdXRoMi1yZWFkLXdyaXRlLWNsaWVudDpzcHJpbmctc2VjdXJpdHktb2F1dGgyLXJlYWQtd3JpdGUtY2xpZW50LXBhc3N3b3JkMTIzNA==';

getToken() {

        const request = {
             headers: {
               'Authorization': this.basic,
             }
        };

        return this.http.post<any>(
            this.rootUrl + "oauth/token?client_id=spring-security-oauth2-read-write-client&password=XXXXX&username=XX@XXX.com&grant_type=password",
            { headers: request.headers }
        );
}

Когда я вызываю службу в моем компоненте, она показывает мне «ошибку:« Несанкционировано », но тот же URL API работает хорошо в« Почтальоне ».

xxx.component.ts:

this.commService.getToken().subscribe((data: any) => {
  console.log(data);
});

В консоли я вижу следующую ошибку:

POST http://10.X.X.XXX: 8089 / XXXX / oauth / token ? client_id=spring-security-oauth2-read-write-client&password=XXX&username=XX@XXX.com&grant_type=password 401

См. Экран почтальона:

enter image description here

Ответы [ 4 ]

0 голосов
/ 20 февраля 2020
this.http.post(url, null, httpOptions)

Я сделал то же самое, что и в сообщении Angular 8: невозможно установить заголовки

0 голосов
/ 20 февраля 2020

Попробуйте это;

getToken() {
    return this.hc.post(`${this.rootUrl}oauth/token`, {}, {
      params: new HttpParams()
        .append('client_id', 'spring-security-oauth2-read-write-client')
        .append('password', 'XXXXX')
        .append('username', 'XX@XXX.com')
        .append('grant_type', 'password'),
      headers: new HttpHeaders()
        .set('Authorization', 'Basic c3ByaW5nLXNlY3VyaXR5LW9hdXRoMi1yZWFkLXdyaXRlLWNsaWVudDpzcHJpbmctc2VjdXJpdHktb2F1dGgyLXJlYWQtd3JpdGUtY2xpZW50LXBhc3N3b3JkMTIzNA=='),
    });
  }

Вы можете попробовать использовать HttpParams вместо строки запроса вручную. А также проверьте это руководство

0 голосов
/ 20 февраля 2020

Это правильный способ установки заголовков. Важно установить Content-Type

this.header_auth = {headers: new HttpHeaders({
   'Content-Type': 'application/json; charset=utf-8',
    Authorization: 'Basic c3ByaW5nLXNlY3VyaXR5LW9hdXRoMi1yZWFkLXdyaXRlLWNsaWVudDpzcHJpbmctc2VjdXJpdHktb2F1dGgyLXJlYWQtd3JpdGUtY2xpZW50LXBhc3N3b3JkMTIzNA=='
})};
0 голосов
/ 20 февраля 2020

Это правильный способ передать его:

const httpOptions = {
      headers: new HttpHeaders({ 'Authorization': 'Basic c3ByaW5nLXNlY3VyaXR5LW9hdXRoMi1yZWFkLXdyaXRlLWNsaWVudDpzcHJpbmctc2VjdXJpdHktb2F1dGgyLXJlYWQtd3JpdGUtY2xpZW50LXBhc3N3b3JkMTIzNA==' })
    };

return this.httpClient.post(this.rootUrl + "oauth/token?client_id=spring-security-oauth2-read-write-client&password=XXXXX&username=XX@XXX.com&grant_type=password", httpOptions)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...