Пакет Angular JWT неправильно проверяет мои токены

Поэтому я использую angular 7 и пакет @auth0/angular-jwt. У меня есть защита авторизации на определенных маршрутах, где я проверяю, не истек ли срок действия токена jwt. Что бы я ни делал, этот метод всегда говорит, что срок действия токена истек. Я знаю, что токены действительны, потому что они работают почтальоном. У кого-нибудь есть опыт работы с этим методом isTokenExpired?

import { Injectable } from '@angular/core';
import { JwtHelperService } from '@auth0/angular-jwt';


@Injectable({ providedIn: 'root' })
export class AuthService {

private jwtHelper = new JwtHelperService()



// ...
public isAuthenticated(): boolean {
const token = localStorage.getItem('token');


// Check whether the token is expired and return
// true or false
return !this.jwtHelper.isTokenExpired(token);

  }
}

LOL есть пакет для этого :o :D это просто какая-то кодировка base64 наверное быстрее написать скрипт чем искать пакет

jonathan Heindl 19.04.2019 01:45

Что вы используете для создания токена?

Brandon Miller 19.04.2019 01:45

Вы проверили, действительно ли в локальном хранилище был токен?

jonathan Heindl 19.04.2019 01:48

часть функции isTokenExpired: if (token === null || token === '') { return true; }

jonathan Heindl 19.04.2019 01:49

@BrandonMiller Я использую jwt.sign() на своем бэкэнде узла

matt 19.04.2019 01:53

@jonathanHeindl У меня есть console.info, и да, я всегда получаю токен из локального хранилища. Должен ли он быть отформатирован определенным образом? У меня есть только токен, а не JWT перед ним.

matt 19.04.2019 01:54

@matt, можешь показать, что ты устанавливаешь в качестве exp на бэкенде? Если вы используете 'expiresIn', помните, что его нужно передавать как объект, например {expiresIn: '1h'}.

Brandon Miller 19.04.2019 01:55

@BrandonMiller ааа, вот оно! Глупец, я думал, что по умолчанию устанавливается срок действия... огромное спасибо!

matt 19.04.2019 02:02

@matt рад, что смог помочь! Не забудьте пометить это как ответ, чтобы в будущем он мог лучше помочь другим пользователям :)

Brandon Miller 19.04.2019 02:03
Тестирование функциональных 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
1
9
262
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Можете ли вы показать, что вы устанавливаете в качестве exp на бэкэнде?

Если вы используете 'expiresIn', помните, что его нужно передавать как объект, например:

{ expiresIn : '1h' }

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