Войдите с токеном JWT из строки запроса в приложении React - PullRequest
0 голосов
/ 07 октября 2018

Я играю с токенами JWT и пытаюсь реализовать базовую аутентификацию электронной почты без паролей и других конфиденциальных данных.Поэтому, если пользователь хочет зарегистрироваться / войти в систему, он просто заполняет электронную почту в поле, а затем мой сервер отправляет ему ссылку с токеном JWT.

Затем токен добавляется к URL-адресу в качестве параметра.Теперь я хотел бы спросить, как войти в систему этого пользователя?Должен ли я сохранить этот токен в localStorage, а затем перенаправить его на страницу «/ profile» или есть лучший подход к этой проблеме?Можно ли в любом случае хранить токен из строки запроса?

1 Ответ

0 голосов
/ 22 июля 2019

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

Лучшей стороной JWT является его воспроизводимость.

Все, что вам нужно сделать, это декодировать заголовок x-auth-token на стороне сервера.

Шаг 1. Создание переменной окружения на сервере Это можно сделать в Ubuntu, просто написав $ export myApp_jwtPrivateKey=someComplicatePrivateKey

Шаг 2. Добавление переменной окруженияк внутреннему приложению

Я не знаю, какой язык вы предпочитаете для внутреннего сервера, для меня я предпочитаю Node.js.В Node.js вы должны создать папку конфигурации.Моя папка выглядит примерно так:

 myApp/
 |──config
      |──default.json
      |──custom-environment-variables.json
 |──middleware
 |──models
 |──routes

Создайте два файла json в папке config.Будьте осторожны при именовании файлов json в папке.Если имена не совпадают, это не будет работать.default.json должен выглядеть так:

{
     "jwtPrivateKey": ""
}

Мы просто определяем здесь имя закрытого ключа с пустым значением.В файле custom-environment-variables.json мы определим это значение следующим образом:

{
    "jwtPrivateKey": "myApp_jwtPrivateKey"
}

Теперь наше приложение может считывать секретный ключ, хранящийся на нашем сервере.Также нам не нужно нигде писать наш секрет.

Теперь в двух последних частях мы создадим и декодируем JWT, используя наш закрытый ключ.

Шаг 3. Создание JWT и отправка его с заголовками, если вход выполнен успешно.

Сначала вы проверяете входящие учетные данные в порядке, используя пакет bcrypt в Node.js.

 const validPassword = await bc.compare(req.body.password, userObject.password);

Если validPassword равно true, мы можем создать токен и отправить егос заголовками;

res.header('x-auth-token', jwt.sign({ _id: this._id }, config.get('jwtPrivateKey'))).send(token);

Вот и все.Надеюсь, это поможет

...