Расшифровать firebase / php-jwt в Angular 6

Я использую firebase / php-jwt в моем Backend Api (с использованием Lumen) для обслуживания Токен аутентификации. и я использую Angular 6 во фронтенде.

Это мой результат из бэкэнда после входа в систему: -

{
"message": "Successfully Authenticated !",
"status": "Found",
"code": 200,
"data": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJsdW1lbi1qd3QiLCJzdWIiOjEsImlhdCI6MTUzMzgxNjc3OCwiZXhwIjoxNTMzODIwMzc4fQ.84BaTHYoWPEzNsZ6Qu0YK-VQelN0WQ0gcmUdXsxO7OA"
}

Мой Структура полезной нагрузки для этого токена: -

$payload = [
        'iss' => "lumen-jwt", // Issuer of the token
        'sub' => $user->user_id, // Subject of the token
        'iat' => time(), // Time when JWT was issued.
        'exp' => time() + (60*60) // Expiration time
    ];

Итак, когда я его декодирую, я просто декодирую: -

JWT::encode($payload, env('JWT_SECRET')); // In environment file "JWT_SECRET = {random_secret_code}"

Итак, у меня есть константа JWT_SECRET, который я использую.

Мой вопрос в том, в каких алгоритмах генерируется токен? потому что у меня нет указать какой-либо алгоритм в функции encode ()?

Теперь в Angular, как я могу извлечь, декодируя токен, чтобы получить user_id, время истечения срока действия и другую информацию?

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
650
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Маркер был подписан с помощью алгоритма HS256, который, вероятно, настроен как алгоритм по умолчанию в PHP-JWT. Вы можете получить эту информацию, просто вставив свой токен в онлайн-отладчик https://jwt.io.

Заголовок выглядит так:

{
  "typ": "JWT",
  "alg": "HS256"
}

В Angular вы можете использовать пакет jwt-decode:

Установите его с помощью: npm install --save jwt-decode

и используйте это так:

var decode = require('jwt-decode');

var token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJsdW1lbi1qd3QiLCJzdWIiOjEsImlhdCI6MTUzMzgxNjc3OCwiZXhwIjoxNTMzODIwMzc4fQ.84BaTHYoWPEzNsZ6Qu0YK-VQelN0WQ0gcmUdXsxO7OA"
const tokenPayload = decode(token);

console.info(tokenPayload.exp) // read the expiration time

Ваш ответ действительно очень помог мне понять только часть алгоритма. Спасибо за это. Наряду с вашим примером использования вполне понятно, но этот stackoverflow.com/questions/48075688/… помог мне получить правильное использование для angular, просто чтобы вы знали.

Fahim Uddin 10.08.2018 08:52

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