Size: a a a

Node.js — русскоговорящее сообщество

2020 March 29

КН

Котяй Негодяй in Node.js — русскоговорящее сообщество
Date.now().valueOf() можно сократить до Date.now()
источник

КН

Котяй Негодяй in Node.js — русскоговорящее сообщество
Date.now() возвращает число.
источник

КН

Котяй Негодяй in Node.js — русскоговорящее сообщество
Эквивалентно:

Date.now()
new Date().valueOf()
источник

RB

Random Balance in Node.js — русскоговорящее сообщество
no name
А, тебе бы добавлять токен в базу (при создании), а потом в коде, который выше доставать его с базы и проверять. В базе вместе с токеном советую хранить и expires, вместо хранения expires в jwt
Если складывать в базу то смысл тогда от токенов этих? Обычные сессии справятся. Преимущество jwt что в базу можно за правами не лазить.
источник

RB

Random Balance in Node.js — русскоговорящее сообщество
Андрей
Старый я уже удалил, но все равно меня приложение пропускает по старому токену
Ну так подпись верна и срок валидный, он и будет пускать. Сделай блэклист (по сути массив в памяти), в который такие токены будут складываться. Они будут храниться там максимум 15 минут (если токен живёт 15 минут, допустим). Раз в минуту чистить от протухших токенов и всё. Ну и если нужно ещё и на диск текущий слепок блэклиста сохранять можно (чтобы поднять после падения сервиса). Ну и проверка в таком массиве никакого оверхеда не даст, он почти всегда будет пустой.
источник

nn

no name in Node.js — русскоговорящее сообщество
Random Balance
Если складывать в базу то смысл тогда от токенов этих? Обычные сессии справятся. Преимущество jwt что в базу можно за правами не лазить.
Я бы не хранил такую информацию об expires на фронте. JWT вроде как зашифрован, но я думаю у смекалистых людей всегда найдется вариант обойти защиту.

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

RB

Random Balance in Node.js — русскоговорящее сообщество
no name
Я бы не хранил такую информацию об expires на фронте. JWT вроде как зашифрован, но я думаю у смекалистых людей всегда найдется вариант обойти защиту.

Плюс к этому, сессиями можно будет управлять из базы. Как ВКонтакте, к примеру, есть список сессий и каждую можно завершить нажатием кнопки. Плюс в админке можно сделать подобный функционал
Так нет проблем, если используются сессии то и работать с ними как с сессиями. Но превращать JWT в сессию нет смысла. 💁🏻‍♂️ Время истечения токена не является конфиденциальной информацией. И вообще всё что внутри него хранится.
источник

RB

Random Balance in Node.js — русскоговорящее сообщество
no name
Я бы не хранил такую информацию об expires на фронте. JWT вроде как зашифрован, но я думаю у смекалистых людей всегда найдется вариант обойти защиту.

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

А

Андрей in Node.js — русскоговорящее сообщество
no name
Создать новую модель Token. В неё добавить поля user_id, expires, token, и метод validate для проверки валидности
Модель то уже есть, нужно  только дописать то что ты написал получается
const schema = new Schema({
   value : {
       type: String,
       required: true,
   },
   userId: {
       type: Schema.Types.ObjectId,
       ref: 'User',
       required: true,
   }
});
источник

nn

no name in Node.js — русскоговорящее сообщество
Random Balance
Так нет проблем, если используются сессии то и работать с ними как с сессиями. Но превращать JWT в сессию нет смысла. 💁🏻‍♂️ Время истечения токена не является конфиденциальной информацией. И вообще всё что внутри него хранится.
Как не является?
источник

AM

Aga Mahmudov in Node.js — русскоговорящее сообщество
извращенец)
источник

RB

Random Balance in Node.js — русскоговорящее сообщество
no name
Как не является?
Чем оно конфиденциально?
Всё что внутри токена лежит - не должно быть секретным.
источник

АП

Алексей Попов in Node.js — русскоговорящее сообщество
@ShGKme поговори с девушкой
источник

А

Андрей in Node.js — русскоговорящее сообщество
Aga Mahmudov
извращенец)
А что так ?
источник

AM

Aga Mahmudov in Node.js — русскоговорящее сообщество
Неужели никто не начал обьяснять почему jwt говно?
источник

RB

Random Balance in Node.js — русскоговорящее сообщество
Aga Mahmudov
Неужели никто не начал обьяснять почему jwt говно?
Потому что это глупость? )
источник

AM

Aga Mahmudov in Node.js — русскоговорящее сообщество
Андрей
А что так ?
В твоём случае, да и в 95% других случаях лучше обойтись express-session’ами
источник

nn

no name in Node.js — русскоговорящее сообщество
Андрей
Модель то уже есть, нужно  только дописать то что ты написал получается
const schema = new Schema({
   value : {
       type: String,
       required: true,
   },
   userId: {
       type: Schema.Types.ObjectId,
       ref: 'User',
       required: true,
   }
});
Токен можно тоже строкой, генерировать рандомный или  на твое усмотрение алгоритму, и тогда можно даже отказаться от jwt
источник

RB

Random Balance in Node.js — русскоговорящее сообщество
Кому нудны JWT - используют JWT. Кому нужны сессии - используют сессии.
источник

RB

Random Balance in Node.js — русскоговорящее сообщество
Aga Mahmudov
В твоём случае, да и в 95% других случаях лучше обойтись express-session’ами
Вот с этим согласен, что большинству JWT может быть не нужен.
источник