заголовок ionic 3 не отправляет авторизационный «токен» на сервер - PullRequest
0 голосов
/ 26 июня 2018

Я делаю экран входа, который принимает имя пользователя и пароль. если вход был успешным, сервер вернет токен. Затем я пытаюсь вызвать другую функцию, чтобы получить информацию о пользователе, но заголовок авторизации не передается. Я пытаюсь мой метод сервера на почтальоне и он работает нормально, поэтому я считаю, что проблема в заголовках. Может кто-нибудь посоветовать, пожалуйста, что делать?

let url = urlConst.Login;
let params1 = new HttpParams();

let loader = this.loadingcontroller.create({
  content: stringEngConst.signinngin
});

let attributes = {
  username: this.uname.value.toLowerCase(),
  password: this.password.value,
  grant_type: "password"
};

var headers = new HttpHeaders();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let body = 'username=' + this.uname.value.toLowerCase() + '&password=' + this.password.value + '&grant_type=password';
let data: Observable < any > = this.http.post(url, body, {
  headers: headers
});

loader.present().then(() => {

      data.subscribe(result => {
            if (result.access_token != null) {

              this.signintoken = result.access_token;
              this.storage.set(storageConst.SIGN_IN_TOKEN, result.token_type + " " + result.access_token);
              headers.append('Authorization', 'Bearer ' + this.signintoken);
              let url1 = 'http://localhost:57940/API/Account/GetUserInfo/';
              let info: Observable < any > = this.http.get(url1, {
                headers: headers
              });

              info.subscribe(result => {
                /*Do Something*/
              });
            }

Обратите внимание, что result.access_token! = Null имеет значение true. и я успешно получаю токен обратно. Но он не передается снова на второй URL (информация)

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вы используете те же заголовки, что и для первого http-запроса:

var headers = new HttpHeaders();
headers.append('Content-Type', 'application/x-www-form-urlencoded');

В зависимости от вашей конечной точки для последующего вызова может потребоваться установить заголовки по-разному:

Попробуйте создать новые заголовки с помощью

var headers2 = new HttpHeaders();
headers.append('Content-Type', 'application/json');

Или полностью избавьтесь от Content-Type в зависимости от того, чего ожидает ваша конечная точка.

Также, если вы используете Ionic 3, стоит проверить, какой модуль Http вы используете (HttpClient или более старый), так как есть некоторые различия в том, как они обрабатывают параметры запроса.

0 голосов
/ 26 июня 2018

Похоже, этот пост может решить проблемы за вас: https://stackoverflow.com/a/47805759/6599076

Вы можете использовать:

headers = headers.append('Authorization', 'Bearer ' + this.signintoken);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...