Как вы уже знаете, 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);
Вот и все.Надеюсь, это поможет