Плагин Aurelia и Open-Id-Connect для IdentityServer

Я реализовал локальный IdentityServer, используя образец Quickstart, и подключил к нему Аурелия-Опеин-Ид-Коннект. Настройка работает нормально.

У меня вопрос:

  1. Когда я запускаю приложение Aurelia как есть, оно предоставляет мне (Претензии) имя и веб-сайт. Но когда я изменяю open-id-connect-configuration-identity-server.ts и добавляю «токен» в response_type: "id_token token", он не предоставляет мне мои утверждения, то есть имя и веб-сайт. Хотя теперь он предоставляет мне access_token.

  2. Как использовать этот access_token и использовать его для доступа к веб-API после успешного входа в систему?

Пожалуйста, если кто-нибудь может поделиться своим опытом по этому поводу.

Вы сказали, что у вас был токен доступа, когда вы изменили response_type на id_token token, так что это ответ на вопрос 2. Что касается первого, скорее всего, это конфигурация вашего IdentityServer. В вашем клиенте попробуйте установить AlwaysIncludeUserClaimsInIdToken на true.

Jesse 05.09.2018 08:54

Я немного изменил второй вопрос. У меня вопрос, как я могу использовать этот токен доступа для доступа к веб-API в Aurelia. Ваш AlwaysIncludeUserClaimsInIdToken для истинного ответа правильный.

Khuzema 05.09.2018 20:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
266
1

Ответы 1

Чтобы использовать access_token для выполнения HTTP-запросов, вам необходимо установить его в качестве токена-носителя в заголовках запросов. Это можно сделать любым удобным для вас способом, конечно, удобный способ сделать это - написать interceptor, который будет добавлять заголовок для каждого вашего HTTP-запроса.

Вы можете сделать перехватчик, выполнив в main.ts следующее:

import { HttpClient } from "aurelia-fetch-client";

export function configure(aurelia: Aurelia) {
  // Other configuration

  const httpClient = aurelia.container.get(HttpClient);

  httpClient.configure((config) => {
    config
      .withInterceptor({
        request(request) {
          const token = getToken(); // Implement your preferred way to do this
          if (token) {
            request.headers.append("Authorization", `Bearer ${token}`);
          }
          return request;
        }
    });
  });

  // More configuration
}

Этот код будет добавлять access_token, который вы получаете с помощью getToken(), к любому HTTP-запросу, который вы делаете.


А способ получить ваш токен здесь состоит в том, чтобы сохранить токен в одноэлементном классе, который вы затем извлекаете из контейнера Aurelia так же, как вы извлекаете httpClient:

const currentUser = aurelia.container.get(CurrentUser);

Однако это полностью зависит от ваших предпочтений.

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