Этот проект реализует базовую систему аутентификации и авторизации с использованием JWT (JSON Web Token) на фреймворке Drogon. Он предоставляет следующие функции:
- Регистрация пользователей
- Аутентификация с получением токена
- Изменение пароля
- Обновление токена
- Выход из системы
Для работы проекта необходимы следующие библиотеки и фреймворки:
-
Drogon: высокопроизводительный фреймворк для разработки веб-приложений на C++. Drogon предлагает быстрый и масштабируемый способ создания RESTful API.
-
JWT-CPP: библиотека для работы с JWT (JSON Web Tokens) в C++. Эта библиотека используется для создания, верификации и декодирования JWT токенов.
-
redis-plus-plus: C++ клиент для работы с Redis. Используется для хранения сессий и кэширования данных.
-
Bcrypt.cpp: C++ библиотека для хеширования паролей с использованием алгоритма bcrypt. Эта библиотека применяется для безопасного хранения паролей.
POST /sign-up
Тело запроса:
{
"username": "example",
"email": "[email protected]",
"password": "123456789&mM"
}
Тело ответа:
{
"message": "User registered successfully"
}
POST /sign-in
Тело запроса:
{
"username": "example",
"email": "[email protected]",
"password": "123456789&mM"
}
Тело ответа:
{
"accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MzY5MDk2MTcsImlhdCI6MTczNjgwMTYxNywiaXNzIjoiQ2FweSIsInN1YiI6IjM2In0.y-2Hv8ES-M9FUyWj8W2iy9yrTSKQfISaKdLnuzV0OMk",
"message": "The user has successfully logged into the account",
"userId": 1
}
POST /changePassword
Тело запроса:
{
"accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MzY5NjEzNzgsImlhdCI6MTczNjg1MzM3OCwiaXNzIjoiQ2FweSIsInN1YiI6IjMifQ.p2OtD-GCZBizt_bHv5IOPKRwcajMxFoaftOWSeOxDRU",
"password": "New123456789&mM"
}
Тело ответа:
{
"message": "New password set successfully"
}
POST /getNewAccessToken
Тело запроса:
{
"accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MzY5Mzg1NzgsImlhdCI6MTczNjgzMDU3OCwiaXNzIjoiQ2FweSIsInN1YiI6IjQwIn0.wxL6djVoY-0uBt1XcaEG3DwPe-vQ1-6yGSgiFyDuaLQ"
}
Тело ответа:
{
"accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MzY5Mzg1NzgsImlhdCI6MTczNjgzMDU3OCwiaXNzIjoiQ2FweSIsInN1YiI6IjQwIn0.wxL6djVoY-0uBt1XcaEG3DwPe-vQ1-6yGSgiFyDuaLQ",
"message": "The user has successfully updated the access token",
"userId": 1
}
POST /logout
Тело запроса:
{
"username": "example",
"email": "[email protected]",
"password": "123456789&mM"
}
Тело ответа:
{
"logout": "ok",
"message": "The user has successfully logged out of the account."
}