Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 September 06

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Guard на роуты?
Может есть ссылочки на примеры с этим в ноде(экспресс конкретно)? Просто в целом я могу соорудить мидлварь для этого и навесить на всё, но мне нужно хранить где-то состояние, что чувак не прошел все шаги, мне сделать табличку или столбец в БД в котором будет хранится это состояние? Насколько это костыльно считается?
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
O Bogdan
Может есть ссылочки на примеры с этим в ноде(экспресс конкретно)? Просто в целом я могу соорудить мидлварь для этого и навесить на всё, но мне нужно хранить где-то состояние, что чувак не прошел все шаги, мне сделать табличку или столбец в БД в котором будет хранится это состояние? Насколько это костыльно считается?
Тебе не нужно хранить какое-то дополнительное состояние. После первого запроса ты создаёшь пользователя и возвращаешь его id. Последующей запросы я так понимаю должны быть связаны с созданным пользователем. Поэтому в следующих запросах передавай его id и на бэкенде проверяй все ли данные у пользователя заполнены
источник

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Тебе не нужно хранить какое-то дополнительное состояние. После первого запроса ты создаёшь пользователя и возвращаешь его id. Последующей запросы я так понимаю должны быть связаны с созданным пользователем. Поэтому в следующих запросах передавай его id и на бэкенде проверяй все ли данные у пользователя заполнены
Тоже только что за это подумал, можно проверять есть ли запись за его профиль. А не слишком ли просядет производительность что я буду проверять на каждом запросе и гонять в базу? Или в целом норм? Или можно как-то закэшировать потом для пользователей эту проверку, дабы не лазить в БД
источник

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
Но в целом думаю, смогу закэшить, разберусь
источник

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
Спасибо) Но есть более интересный вопрос)
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
O Bogdan
Тоже только что за это подумал, можно проверять есть ли запись за его профиль. А не слишком ли просядет производительность что я буду проверять на каждом запросе и гонять в базу? Или в целом норм? Или можно как-то закэшировать потом для пользователей эту проверку, дабы не лазить в БД
Обращение к бд на каждом запросе это норм. Но тоже смотря как, к какой субд и с какой частотой
источник

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
Есть функционал логина, я шлю запрос(например, api/v1/user/login/) шлю почту и пароль и если всё ок, я создал бы сессию и отдал бы с куками токены. Но я хочу внедрить 2 factor auth с one time password. Это означает, что мне нужно в начале послать запрос на api/v1/user/login/ и проверить что юзер ввел правильные данные и чтобы пустить его дальше и выдать токены нужно принять после этого шага 6 значный код с приложения для аутентификации например на api/v1/user/2fa/code/ или ввести recovery code по адресу api/v1/user/2fa/recovery/ и только после успеха одного из этих шагов я выдам токены c доступами к остальной части api. Как мне построить зависимость что в начале должен пройти успешный логин а потом 2fa. Как можно такое построить?
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
O Bogdan
Есть функционал логина, я шлю запрос(например, api/v1/user/login/) шлю почту и пароль и если всё ок, я создал бы сессию и отдал бы с куками токены. Но я хочу внедрить 2 factor auth с one time password. Это означает, что мне нужно в начале послать запрос на api/v1/user/login/ и проверить что юзер ввел правильные данные и чтобы пустить его дальше и выдать токены нужно принять после этого шага 6 значный код с приложения для аутентификации например на api/v1/user/2fa/code/ или ввести recovery code по адресу api/v1/user/2fa/recovery/ и только после успеха одного из этих шагов я выдам токены c доступами к остальной части api. Как мне построить зависимость что в начале должен пройти успешный логин а потом 2fa. Как можно такое построить?
1. Отправляешь логин и пароль. На бэкенде находишь пользовател, генерируешь код, который сначала записываешь в какое-то хранилище и обязательно этому коду присвой уникальный идентификатор и запиши id пользователя , затем код отправляешь в смс, а в качестве ответа на запрос верни идентификатор.
2. Отправляешь запрос на 2фа. В запросе передашь полученный идентфикатор и код смс. Делаешь запрос в хранилище. Если данные совпадают - авторизовываешь
источник

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
Alexander
1. Отправляешь логин и пароль. На бэкенде находишь пользовател, генерируешь код, который сначала записываешь в какое-то хранилище и обязательно этому коду присвой уникальный идентификатор и запиши id пользователя , затем код отправляешь в смс, а в качестве ответа на запрос верни идентификатор.
2. Отправляешь запрос на 2фа. В запросе передашь полученный идентфикатор и код смс. Делаешь запрос в хранилище. Если данные совпадают - авторизовываешь
Блин, спасибо за идею) Реально ведь просто, будет временное хранилище для этого, поставить на крон очистку этих данных например спустя какое-то время, а без токенов юзер не сможет ничего делать по api
источник

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
@lsndr а какой может ты посоветуешь кэш для ноды? Я посмотрел на https://www.npmjs.com/package/node-cache но если приложуху ребутнуть, придется кэш снова прогревать. Может монгу для этого заюзать
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
O Bogdan
@lsndr а какой может ты посоветуешь кэш для ноды? Я посмотрел на https://www.npmjs.com/package/node-cache но если приложуху ребутнуть, придется кэш снова прогревать. Может монгу для этого заюзать
Возможно redis тебе подойдёт
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
O Bogdan
@lsndr а какой может ты посоветуешь кэш для ноды? Я посмотрел на https://www.npmjs.com/package/node-cache но если приложуху ребутнуть, придется кэш снова прогревать. Может монгу для этого заюзать
А зачем тебе нужен кэш? Кэшить данные о пользователе?

Просто кажется что ты просто хочешь бд выгрузить в память. А некоторые субд и так это умеют делать
источник

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
Alexander
А зачем тебе нужен кэш? Кэшить данные о пользователе?

Просто кажется что ты просто хочешь бд выгрузить в память. А некоторые субд и так это умеют делать
Ну мне показалось для кейса с проверкой заполнил ли юзер профиль, юзеров может быть много и скорее всего у них будут заполнены профиля и зачем мне впустую будет дергать каждый раз эту проверку, думаю, это закэшить. СУБД у меня postgres
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
O Bogdan
Ну мне показалось для кейса с проверкой заполнил ли юзер профиль, юзеров может быть много и скорее всего у них будут заполнены профиля и зачем мне впустую будет дергать каждый раз эту проверку, думаю, это закэшить. СУБД у меня postgres
Ну смотри сам конечно. Но мне кажется ты пытаешься решить проблемы,, которые не скоро встретишь. А когда встретишь мб решать придётся подругому
источник

OB

O Bogdan in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Ну смотри сам конечно. Но мне кажется ты пытаешься решить проблемы,, которые не скоро встретишь. А когда встретишь мб решать придётся подругому
Думаю, ты прав. Спасибо за помощь) Пока наверное реально в кэше нет смысла, ибо реально нет проблем
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
В соседнем чате ночью пытались разобрать интересный кейс с деоптимизацией
https://t.me/nodejs_ru/540371
источник

м

максим in NodeUA - JavaScript and Node.js in Ukraine
Мне нужно сделать БД, для получения результатов, обновления БД необходимо использовать sql, помогите пожалуйста понять как это реализовать желательно с конкретными инструментами
источник

VY

Vladimir Yefremov in NodeUA - JavaScript and Node.js in Ukraine
максим
Мне нужно сделать БД, для получения результатов, обновления БД необходимо использовать sql, помогите пожалуйста понять как это реализовать желательно с конкретными инструментами
Ты про это хоть что-нибудь читал?
источник

VY

Vladimir Yefremov in NodeUA - JavaScript and Node.js in Ukraine
Или ты думаешь, что в чате всему научат?
источник

IG

Ivan Granat in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
Тебе надо искать по полям объекта, как я понял. Это долго и неудобно
Если набор этих полей статичен, лучше сразу вытащить их и построить какой-нибудь map с ключами из этих строк
а есть ссылка на пример ?
а то я никогда такое не делал 😬
источник