Files
GKNB_MSTM071/Backend/harmadik gyakorlat_minta/README.md
T
2026-03-04 20:02:39 +01:00

2.3 KiB

Harmadik Gyakorlat - MINTA Megoldás

Ez a mappa tartalmazza a harmadik gyakorlat teljes, működő megoldását.

Amit implementáltunk:

1. Authentication (Hitelesítés)

  • User regisztráció jelszó hash-eléssel (bcrypt)
  • User bejelentkezés JWT tokenekkel
  • Cookie-based session kezelés
  • Token frissítés (refresh token)
  • Kijelentkezés

2. Authorization (Jogosultságkezelés)

  • JWT token validálás middleware
  • Role-based access control (RBAC)
  • Resource ownership ellenőrzés
  • Védett endpoint-ok

3. Security Best Practices

  • HttpOnly cookie-k
  • Secure cookie-k (production)
  • JWT token expiry
  • Password hashing (bcrypt)
  • Input validáció

Indítás

npm install
npm run docker:up
npx prisma generate
npx prisma migrate dev
npm run dev

API Endpoints

Auth Endpoints

  • POST /api/auth/register - Regisztráció
  • POST /api/auth/login - Bejelentkezés
  • POST /api/auth/logout - Kijelentkezés (védett)
  • POST /api/auth/refresh - Token frissítés
  • GET /api/auth/me - Aktuális user (védett)

Blog Endpoints

  • GET /api/blogs - Összes blog (publikus)
  • GET /api/blogs/:id - Egy blog (publikus)
  • POST /api/blogs - Blog létrehozás (védett)
  • PUT /api/blogs/:id - Blog módosítás (védett + ownership)
  • DELETE /api/blogs/:id - Blog törlés (védett + ownership)

Példa Használat

# Regisztráció
curl -X POST http://localhost:3000/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "email": "test@test.com",
    "username": "testuser",
    "password": "Test1234"
  }'

# Login
curl -X POST http://localhost:3000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "test@test.com",
    "password": "Test1234"
  }'

# Blog létrehozás (védett)
curl -X POST http://localhost:3000/api/blogs \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My Blog",
    "content": "Blog content..."
  }'

Tanulási Pontok

  1. JWT Tokens: Access és Refresh tokenek használata
  2. Bcrypt: Jelszó hash-elés és validálás
  3. Cookie-based Auth: HttpOnly, Secure cookie-k
  4. Authorization Middleware: Token validálás, role check, ownership
  5. Security: Best practices implementálása