Skip to content

Application on Spring Boot / Spring Security / JWT

Notifications You must be signed in to change notification settings

alex90bar/mytest

Repository files navigation

MytestApplication

Описание проекта

MytestApplication - это учебный проект на Spring Boot, с использованием Spring Security на Jwt-токенах. БД - PostgreSQL. Взаимодействие приложения с БД через Spring Data JPA / Hibernate. Маппинг сущностей выполняется через MapStruct. Валидация на spring-boot-starter-validation. В проекте также используется Lombok для упрощения процесса разработки и снижения количества кода. Настройки приложения в файле src/main/resources/application.yaml. Ключевые места бизнес-логики покрыты тестами. Порт приложения: 8089.

Приложение упаковано в докер-контейнер. При запуске контейнера БД заполняется тестовыми данными (src/main/resources/data.sql), можно проходить авторизацию с использованием credentials в формате JSON:

{ 
  "name": "user",
  "password": "pass"
}

Скрипты для запуска приложения и БД:

docker network create my-network
docker run --network=my-network --name postgres -e POSTGRES_DB=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres -p 5435:5432 -d postgres
docker run --network=my-network --rm -p 8089:8089 -e DATABASE_URL=postgresql://postgres:5432/postgres alex90bar/mytest:latest

Список эндпоинтов:

Endpoint Needs token Description JSON Body
http://localhost:8089/api/auth/signup No token регистрация нового пользователя, запрос POST в формате JSON: {"name": "username", "password": "password"}
http://localhost:8089/api/auth/login No token Аутентификация и авторизация, получение jwt-токена, запрос POST в формате JSON: {"name": "user", "password": "pass"}
http://localhost:8089/api/message Needs Bearer Token Публикация нового сообщения с текстом "some text", запрос POST в формате JSON: {"name": "user", "message": "some text"}
http://localhost:8089/api/message Needs Bearer Token Получение последних 10 сообщений, отсортированных по убыванию, запрос POST в формате JSON: { "name": "user", "message": "history 10" }

В запросах, где нужен токен, в заголовке Authorization должен быть указан Bearer-токен, в формате Bearer_ + tokenValue (например, Bearer_eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiaWF0IjoxNjU5NjE2OTg4LCJleHAiOjE2NjA4MjY1ODh9.FCgVbAzmWrIFos6Q-60YK67KbFyl-0joLyS39qLGGLE).

Запросы для проверки работоспособности через curl:

Получение jwt-токена с использованием credentials name = user, password = pass:

curl -X POST http://localhost:8089/api/auth/login -H 'Content-Type: application/json' -d '{"name":"user","password":"pass"}'

Регистрация нового пользователся с использованием credentials name = userNew, password = passNew:

curl -X POST http://localhost:8089/api/auth/signup -H 'Content-Type: application/json' -d '{"name":"userNew","password":"passNew"}'

Публикация нового сообщения, name = user, message = some text, требует указанный в заголовке Authorization Bearer-токен:

curl -X POST http://localhost:8089/api/message -H "Authorization: Bearer_eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiaWF0IjoxNjU5NjE2OTg4LCJleHAiOjE2NjA4MjY1ODh9.FCgVbAzmWrIFos6Q-60YK67KbFyl-0joLyS39qLGGLE" -H 'Content-Type: application/json' -d '{"name":"user","message":"some text"}'

Получение последних 10 сообщений, отсортированных по убыванию, требует указанный в заголовке Authorization Bearer-токен:

curl -X POST http://localhost:8089/api/message -H "Authorization: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiaWF0IjoxNjU5NjE2OTg4LCJleHAiOjE2NjA4MjY1ODh9.FCgVbAzmWrIFos6Q-60YK67KbFyl-0joLyS39qLGGLE" -H 'Content-Type: application/json' -d '{"name":"user","message":"history 10"}'

About

Application on Spring Boot / Spring Security / JWT

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published