Size: a a a

JavaScript.Ninja

2021 July 05

Y

Yevhen in JavaScript.Ninja
Когда откроете вторую вкладку нужен будет новый session token, который будет автоматически выдан используя refresh token. А это значит, что предыдущий нужно инвалидировать.
И даже без инвалидами может получиться ситуация гонки, когда refresh token меняется между запросами и Вам выдаётся по несколько токенов подряд
источник

VK

Vladimir Klimov in JavaScript.Ninja
Та же ситуация с входом на разных устройствах
источник

Y

Yevhen in JavaScript.Ninja
Нет, на разных устройствах будут разные refresh tokens. В случае вкладок он один.
источник

Y

Yevhen in JavaScript.Ninja
А почему сразу не отправить session token на клиент?
источник

ДМ

Дмитрий Моисеев... in JavaScript.Ninja
через урл параметры?
источник

ДМ

Дмитрий Моисеев... in JavaScript.Ninja
localhost:3000/?token=qweqweqwe123123
источник

ДМ

Дмитрий Моисеев... in JavaScript.Ninja
и потом сохранить его в localStorage?
источник

Y

Yevhen in JavaScript.Ninja
Ну, можно обычной cookie и удалить ее после прочтения, что тоже так себе вариант.

Можно callback сделать на приложение, прочитать auth code, сделать запрос на backend, а оттуда уже вернуть session token
источник

Y

Yevhen in JavaScript.Ninja
Передавая session token через URL есть риск, что пользователь его скопирует и отправит кому-то
источник

ДМ

Дмитрий Моисеев... in JavaScript.Ninja
auth code это что ?
источник

Y

Yevhen in JavaScript.Ninja
Если содержимое JWT Вам не нужно на клиенте (а зачем тогда JWT?), то можно просто ставить его как httponly cookie и отлавливать ошибки при API запросах.
источник

Y

Yevhen in JavaScript.Ninja
Это то, что Вам возвращает GitHub/Google/Facebook после того, как пользователь залогиниться в их сервисе. Потом auth code меняется на auth token, который и используется для выполнения API запросов на том провайдеру, который выдал auth token.
Это стандартный OAuth flow.
Вы читали те ссылки, что я кидал ранее?
источник

ДМ

Дмитрий Моисеев... in JavaScript.Ninja
читал, но auth code как то не отложился в памяти
источник

Y

Yevhen in JavaScript.Ninja
А ещё passport можно убрать, так как он ничего полезного не делает.
Тем более в образовательных целях будет намного полезнее разобраться как работает OAuth2 flow без всяких библиотек.
источник

Y

Yevhen in JavaScript.Ninja
Вот ещё неплохое видео о том как работает OAuth
https://youtu.be/996OiexHze0
источник

ДМ

Дмитрий Моисеев... in JavaScript.Ninja
спасибо за видос
источник

ДМ

Дмитрий Моисеев... in JavaScript.Ninja
не смотрел еще
источник

Y

Yevhen in JavaScript.Ninja
Но обязательно почитайте RFC
источник

IS

Ivan Saranchonkau in JavaScript.Ninja
смотрел буквально позавчера)
очень классный видос, объяснение и простой английский
источник

Y

Yevhen in JavaScript.Ninja
Ага, мне это видео помогло построить общую картину.
Но на самом деле, все это написано в RFC, который короче этого видео)
источник