Tema
/
Mobiliosios programėlės KOTLIN
Pamoka 10 / 14 Autentifikuotos užklausos ~45 min
📖 Teorija

Kaip žetonas patenka į kiekvieną užklausą

8a pamokoje išsaugojom sesijos žetoną, bet jo dar niekur nesiuntėm. Dabar — 4 kontrakto žingsnis: prisegti žetoną prie kiekvienos apsaugotos užklausos.

Serveris apsaugotą endpoint'ą (pvz., GET /orders) tikrina pagal HTTP antraštę:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Būdas „bloga" — kiekvienoje repozitorijoje ranka pridėti šią antraštę. Tada apie autentifikaciją turi galvoti kiekvienas kodo gabalas, ir vieną kur nors pamirši.

Būdas „gerai" — vienas OkHttp interceptorius. Interceptorius — tai filtras, per kurį eina kiekviena išeinanti užklausa. Jame vieną kartą prisegam žetoną, ir visa kita programa apie tai net nežino:

Repozitorija ──▶ Retrofit ──▶ OkHttp ──[AuthInterceptor prideda žetoną]──▶ serveris

Du dalykai, kuriuos interceptorius privalo tvarkyti:

  • Vieši keliai. /login ir /register NEGALI turėti žetono — jungiantis jo dar nėra. Interceptorius juos praleidžia.
  • 401 (Unauthorized). Jei žetonas pasibaigęs ar blogas, serveris grąžina 401. Tada vartotoją reikia grąžinti į prisijungimą.

Šioje pamokoje: AuthInterceptor prisega žetoną, coreModule gauna tikrą OkHttpClient, ir pagaliau atsiranda užsakymaiPOST /orders (pateikti) ir GET /orders (istorija). Serveris pagal žetoną žino, kieno tai užsakymai, tad kiekvienas mato tik savus.