Angular 6 - Как поддерживать сессию jwt в каждом запросе? - PullRequest
0 голосов
/ 30 мая 2018

Я использую Angular 6 и NodeJS (API).

Для аутентификации я использую токен сеанса JWT.При входе в систему я могу авторизовать токен и зайти на домашнюю страницу.Но при постоянном использовании приложения не поддерживается сессия.Срок действия токена истек 30 сек.Не сбрасывать токен для каждого запроса.

Использование HttpInterceptor для отправки токена каждого запроса.

Угловой код:

export class AuthInterceptor implements HttpInterceptor {

constructor(private router: Router) { }

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    if (req.headers.get('No-Auth') == "True")
        return next.handle(req.clone());

    if (localStorage.getItem('userToken') != null) {
        const clonedreq = req.clone({
            headers: req.headers.set("Authorization", "Bearer " + localStorage.getItem('userToken'))
        });
        return next.handle(clonedreq)
            .pipe(
                tap(event => {
                    if (event instanceof HttpResponse) {
                      const elapsed = Date.now();
                      console.log(`Request for ${req.urlWithParams} took ${elapsed} ms.`);
                    }
                  }, error => {
                    console.error('NICE ERROR', error)
                  })
            );
    }
    else {
        this.router.navigateByUrl('/login');
    }
}
 }

1 Ответ

0 голосов
/ 30 мая 2018

Ваш бэкэнд должен обработать это, либо возвращать новый токен каждый запрос, либо увеличивать время, необходимое для истечения срока действия

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