Trenutna implementacija
Trenutno sistem ne koristi autentifikaciju. Svako može da pristupi svim endpointima, odnosno svako ima pristup korisnicima.
Zadatak:
Implementirati token based autentifikaciju koristeći JWT (JSON Web Token). Omogućiti da samo ulogovani korisnik može da pristupi stranici Users i da može da pristupi endpoint-ima za upravljanje korisnicima. Korisnik se na sistem prijavljuju putem forme za prijavu.
Radi jednostavnosti implementacije, unapred zadati jednog korisnika u bazi podataka i putem njegovih kredencijala pristupati sistemu. On u odnosu na druge korisnike ima dodatna polja email i password. Lozinku obavezno čuvati kao hešovanu vrednost. Preporuka:
- Kreirati poseban endpoint za unos korisnika koji ima pristup sistemu:
- POST <API_PREFIX>/admins/register
- Poslati zahtev preko Postman-a za kreiranje administratorskog naloga
Backend
- Endpoint za prijavu:
- POST <API_PREFIX>/auth/login
-
Prijavljuje se putem:
-
Zaštititi endpoint-i:
- Svi endpoint-i koji su vezani za korisnika
-
Middleware
- Naziv middleware-a:
auth_required
- Proverava validnost JWT
- Proverava da li je token u blacklist (revoked token u Redis bazi)
-
Token validacija:
- Definisati secret key u
.env fajla
- Postaviti expiration (npr. 30min)
-
Dodati Logout opciju za prijavljenje korisnike
- POST <API_PREFIX>/auth/logout
- Prima JWT u
Authorization header-u:
- Dodaje token u blacklist (Redis baza) tako da se više ne može koristiti
Frontend
-
Login forma šalje email i password
-
Nakon uspešne prijave:
- Sačuvati JWT (HttpOnly cookie)
- Koristiti JWT za svaki zaštićeni zahtev
Authorization: Bearer <token>
- Logout dugme
Reference:
Trenutna implementacija
Trenutno sistem ne koristi autentifikaciju. Svako može da pristupi svim endpointima, odnosno svako ima pristup korisnicima.
Zadatak:
Implementirati token based autentifikaciju koristeći JWT (JSON Web Token). Omogućiti da samo ulogovani korisnik može da pristupi stranici
Usersi da može da pristupi endpoint-ima za upravljanje korisnicima. Korisnik se na sistem prijavljuju putem forme za prijavu.Radi jednostavnosti implementacije, unapred zadati jednog korisnika u bazi podataka i putem njegovih kredencijala pristupati sistemu. On u odnosu na druge korisnike ima dodatna polja
emailipassword. Lozinku obavezno čuvati kao hešovanu vrednost. Preporuka:Backend
Prijavljuje se putem:
emailpasswordZaštititi endpoint-i:
Middleware
auth_requiredToken validacija:
.envfajlaDodati
Logoutopciju za prijavljenje korisnikeAuthorizationheader-u:Frontend
Loginforma šaljeemailipasswordNakon uspešne prijave:
Reference: