Уникальный сеанс с использованием токена JWT Angular Auth - PullRequest
0 голосов
/ 16 октября 2019

У меня есть идея создать базовое приложение для аутентификации сеанса, и оно работает, но я могу войти в систему с одним и тем же пользователем в двух разных браузерах.
У кого-нибудь есть идеи, как создать метод аутентификации, чтобы избежать the double login?
Мое приложение на самом деле использует Angular версии 5 и, как и бэкэнд Django Rest Framework, это мой настоящий метод auth service.ts :

private apiRoot = 'http://127.0.0.1:8000/auth/';
    islogedin: boolean;
    constructor(private http: HttpClient) { }

    private setSession(authResult) {
      const token = authResult.token;
      const payload = <JWTPayload> jwtDecode(token);
      const expiresAt = moment.unix(payload.exp);

      localStorage.setItem('token', authResult.token);
      localStorage.setItem('expires_at', JSON.stringify(expiresAt.valueOf()));
    }

    get token(): string {
      return localStorage.getItem('token');
    }

    login(username: string, password: string) {
      return this.http.post(
        this.apiRoot.concat('login/'),
        { username, password }
      ).pipe(
        tap(response => this.setSession(response)),
        shareReplay(),
      );
    }

1 Ответ

0 голосов
/ 17 октября 2019

Вы можете попробовать этот пакет Simple JWT ( введите описание ссылки здесь ).

В настройках есть поле с именем JTI_CLAIM : имя заявки, которое используетсяхранить уникальный идентификатор токена. Этот идентификатор используется для идентификации отозванных токенов в приложении черного списка. В некоторых случаях может потребоваться использовать другое утверждение, помимо стандартного утверждения "jti", для хранения такого значения.

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