Токен не добавляется в локальное хранилище после успешного запроса

У меня проблемы с плагином aurelia-auth. Я могу запросить токен из своего бэк-энда и получить успешный ответ - однако мое приложение не проходит проверку подлинности, и токен не сохраняется в локальном хранилище.

Auth-config.js

var config = {

  baseUrl: 'http://localhost:64794',
  signupUrl: 'users',
  loginUrl: 'api/values/PostPassword',
  tokenName: 'id_token',
  loginRedirect: '#/welcome',
  authHeader: 'Authorization',
  authToken: 'Bearer',
  storage: 'localStorage'
}

export default config;  

login.js

import {AuthService} from 'aurelia-auth';
import {inject} from 'aurelia-framework';

@inject(AuthService)

export class Login {

  heading = 'Login';

  email = '';
  password = '';

  loginError = '';

  constructor(auth) {
    this.auth = auth;
  };

  login() {
    return this.auth.login(this.email, this.password)
    .then(response => {
      console.log("Login response: " + response);
      console.log("Auth: " + this.auth.isAuthenticated());
    })
    .catch(error => {
      this.loginError = error.response;
    });
  };
}

Консольный вывод:

Login response: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6ImIiLCJuYmYiOjE1MDkyNzkxMzYsImV4cCI6MTUwOTI4MDMzNiwiaWF0IjoxNTA5Mjc5MTM2fQ.4QZu8pQI-K_71x_CKT9ANu1vQD7VvVUcyep51CvvCXg
login.js:27 Auth: false

Любой совет будет принят во внимание.

1 ответ

Решение

Токен (или объект, содержащий его), как ожидается, будет значением prop 'access_token' в ответе по умолчанию в aurelia-auth

так что вам нужно изменить структуру вашего ответа API на

{ access_token: YOUR_TOKEN }

если у вас нет контроля над сервером, вы все равно можете извлечь токен, переопределив конфигурацию по умолчанию. один вопрос здесь responseTokenPropбольше здесь

Кроме того, для более ясного представления о том, как токен извлекается, посмотрите здесь

Другие вопросы по тегам