169 похожих чатов

Помогите пожалуйста. Уже больше 10 дней пытаюсь, не получается. Мне

нужно создать систему аутентификации. Express, mysql. Как это сделать?

11 ответов

6 просмотров

вопрос по бакенду ?

Какая именно аутентификация интересует, через соц. сервисы или email/телефон?

Dmitry-Kozlov Автор вопроса
Evgeny Scherbitsky
Какая именно аутентификация интересует, через соц....

любая) Просто чтобы человек смог имень акк в моём приложении

Dmitry-Kozlov Автор вопроса
катя навсегда
firebase auth

но у меня бд mysql

Dmitry Kozlov
но у меня бд mysql

либо возьмите фреймворк для бакенда с поддержкой аунтентификации либо напишите свою

Dmitry Kozlov
любая) Просто чтобы человек смог имень акк в моём ...

Описание базовых шагов авторизации/регистрации пользователя с помощью email/телефона/nickname: 1.Регистрация пользователя: 1.1.Получение со стороны клиента регистрационных данных - логин (email/телефон/nickname) и пароль; 1.2.Проверка уникального логина на занятость. Если не свободен - генерируем исключение; 1.3.Далее, если логин свободен - хэширование пароля с солью (bcrypt); 1.4.Создание в БД (mysql) нового пользователя с начальными данными, куда обязательно должны входить: - логин, указанный при регистрации пользователем; - соль (используемая при хэшировании пароля); - хэшированный пароль. Все это необходимо, чтобы в будущем пользователь мог войти в свою учетную запись в приложении; 1.5.Далее можно выбрать один из двух сценариев: 1.5.1.После регистрации (для входа в систему) пользователю необходимо отдельно авторизоваться с указанными при регистрации данными. В этом случае регистрация завершена - отправляем на клиент ответ с 201-м кодом, что новый пользователь создан и все. 1.5.2.При успешной регистрации пользователя сразу осуществлять вход в его акк (создавать сессию/токен) и редиректить на главную страницу приложения (как по мне, этот вариант предпочтительнее). Для этого необходимо: - сгенерировать jwt-токен (jsonwebtoken) c полезной нагрузкой и секретной фразой. В качестве полезной нагрузки, помимо прочего, необходимо указывать уникальный идентификатор пользователя (mysql), чтобы в будущем, при проверке входящего запроса с токеном, сервер мог "узнать" от кого именно запрос. Также рекомендуется добавить опцию expiresIn - срок жизни токена. Если его не указать токен будет вечным. - если необходима поддержка опции "Завершить активную сессию на всех устройствах" - дополнительно создается запись (например, в redis), куда входят уникальный id пользователя (mysql) и токен, являющимся единым для всех устройств (также, можно вести черный список невалидных токенов). Дополнительно в redis можно установить ttl (время жизни данных) вместо expiresIn токена. 1.5.3.И в завершение - отправляем на клиент только что сгенерированый токен с данными пользователя. 2.Авторизация: 2.1.Получение авторизационных данных с клиента (логин, пароль): 2.2.Проверка, чтобы пользователь с таким логином был в БД: 2.3.Далее проверка пароля, введенного пользователем (хэширование текущего и сравнение с хэшированным при регистрации/смене); 2.4.Если все ok - далее создание сессии, как описано выше.

Dmitry-Kozlov Автор вопроса

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
9
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Карта сайта