JWT server
JWTServer лёгкий и быстрый микросервис JWT.
JWT Server является микросервисом для авторизации пользователей. Имеющий гибкие настройки и разные версии API.
- Подключение Google Recaptcha V3
- Отправка кода через сервис https://smsc.ru/ (стадия тестирования)
Особенности
- Быстрый старт
- Походит для тестирования frontend
- Основан на Fast API framework и вдохновлен работами tiangolo
Route Entrypoints
Login
- [POST] - /api/v1/login/access-token
- [POST] - /api/v1/login/test-token
- [POST] - /api/v1/password-recovery/{email}
- [POST] - /api/v1/reset-password/
- [POST] - /api/v1/phone_status/
Users
- [GET] - /api/v1/users/
- [POST] - /api/v1/users/
- [GET] - /api/v1/users/me
- [PUT] - /api/v1/users/me
- [POST] - /api/v1/users/open
- [GET] - /api/v1/users/{user_id}
- [PUT] - /api/v1/users/{user_id}
Utils
- [POST] - /api/v1/utils/test-celery/
- [POST] - /api/v1/utils/test-email/
Items
- [GET] - /api/v1/items/
- [POST] - /api/v1/items/
- [GET] - /api/v1/items/{id}
- [PUT] - /api/v1/items/{id}
- [DELETE] - /api/v1/items/{id}
Поддержка кода https://github.com/goltsevnet/jwtserver
Зависимости
- uvicorn https://www.uvicorn.org/
- fastapi https://fastapi.tiangolo.com/
- starlette https://www.starlette.io/
- passlib https://pypi.org/project/passlib/
- pydantic https://pydantic-docs.helpmanual.io/
- redis https://pypi.org/project/redis/
- python-jose https://pypi.org/project/python-jose/
- sqlalchemy https://pypi.org/project/SQLAlchemy/
- sqlalchemy_utils https://sqlalchemy-utils.readthedocs.io/
- asyncpg https://pypi.org/project/asyncpg/
- psycopg2-binary https://pypi.org/project/psycopg2-binary/
- httpx https://www.python-httpx.org/
- python-dotenv https://pypi.org/project/python-dotenv/
Установка
python -m pip install jwtserver
Подготовьте базу данных Postgres 14
и выше версии.
Используйте как вариант docker-compose.yaml
version: '3.1'
services:
db:
image: postgres:14.1-alpine
restart: always
build: .
environment:
POSTGRES_PASSWORD: example
ports:
- 5433:5432
Обязательно добавьте переменную в среду: POSTGRES__DSN
для миграций.
Выполните команду:
upgradehead
Должны увидеть:
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> 98f3d19d2c0d, initial
Остальные переменные можно добавить в файл .env
или через dotenv.
ENVIRONMENT=production
PROJECT_NAME=JwtServer
SMS__LOGIN=login
SMS__PASSWORD=password
SMS__IGNORE_ATTEMPTS=True
POSTGRES__DSN=postgresql+psycopg2://postgres:example@localhost:5433/postgres
RECAPTCHA=True
GOOGLE__RECAPTCHA__SECRET_KEY=SECRET_KEY
TOKEN__V1_SOL=12345679100987654321
TOKEN__SECRET_KEY=SECRET_KEY
TOKEN__ACCESS_TOKEN_EXPIRE_MINUTES=90
API_V1_STR=/api/v1
Примеры:
Для разработки
- создайте файл
dev.py
from jwtserver.server import dev
if __name__ == "__main__":
dev(host="localhost", port=5000, log_level="info")
Интерактивная API документация
откройте Interactive API docs http://localhost:5000/docs
Вы увидите автоматическую интерактивную документацию по API.
Альтернативная API документация
откройте Alternative API redoc http://localhost:5000/redoc
Для продукции
- создайте файл
main.py
from jwtserver.app import app
app.debug = False
-
Gunicorn:
gunicorn main:app
Лицензия
Этот проект находится под лицензией Apache 2.0.