Выйти из всех устройств, NodeJS и Angular 6 - PullRequest
0 голосов
/ 09 ноября 2018

Я разрабатываю приложение, NodeJ (вместе с Express) будут на стороне сервера, который будет предоставлять сервис RESTful, а Angular 6 будет использовать RESTful API.

Теперь проблема в том, когда пользователь меняет пароль, а затем как выйти из системы со всех устройств.

Я использую JWT для аутентификации.

Ответы [ 2 ]

0 голосов
/ 06 января 2019

После долгих поисков я нашел одно решение,

В таблице пользователя должно быть поле updated_at , в котором хранится время, когда пользователь последний раз обновлял свои данные, Вы должны использовать это поле как строку шифрования для JWT, поэтому, когда пользователь обновляет информацию, ранее выданные токены считаются недействительными, поэтому пользователь не сможет выполнить с ним никаких действий, и он / она должен обновить токен.

0 голосов
/ 10 ноября 2018

Неправильно выходить из системы, когда пользователь меняет пароль, если только пользователь добровольно не решит выйти из системы со всех устройств: -

После того, как пользователь выйдет из системы, затем очистит localstorage и перенаправит для входа в систему как: -

Просто измените токен авторизации, когда пользователь обновит пароль, и убедитесь, что токен по-прежнему действителен для каждого запроса. Если он недействителен, выдает ошибку 401, а затем перенаправляет на страницу входа.

logout(){
/* clear your localStorage token /*
// redirect to login page 
}

interceptor.ts

  import { Injectable } from '@angular/core';
    import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
    import { Observable } from 'rxjs';

    @Injectable()
    export class JwtInterceptor implements HttpInterceptor {
        intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
            // add authorization header with jwt token if available
            let currentUser = JSON.parse(localStorage.getItem('currentUser'));
            if (currentUser && currentUser.token) {
                request = request.clone({
                    setHeaders: { 
                        Authorization: `Bearer ${currentUser.token}`
                    }
                });
            }

            return next.handle(request).do((event: HttpEvent<any>) => {
      if (event instanceof HttpResponse) {
        // do stuff with response if you want
      }
    }, (err: any) => {
      if (err instanceof HttpErrorResponse) {
        if (err.status === 401) {
          // redirect to the login route
          // or show a modal showing, we are redirecting to you login page.
        }
      }
    });
  }
}

Ссылка: - https://medium.com/@ryanchenkie_40935/angular-authentication-using-the-http-client-and-http-interceptors-2f9d1540eb8

http://jasonwatmore.com/post/2018/05/23/angular-6-jwt-authentication-example-tutorial

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