Sesijos rakto kontraktas
Iki šiol Pica buvo anonimiška: meniu (GET /menu) mato bet kas. Bet užsakymas priklauso konkrečiam žmogui. Reikia paskyrų — ir būdo įrodyti serveriui „čia tas pats vartotojas".
Sprendimas — sesijos rakto kontraktas. Jis paprastas ir jį verta įsidėmėti, nes 8b (Google) ir 9 (užsakymai) pamokose kartosis tas pats:
1. Klientas siunčia el. paštą + slaptažodį → POST /login (arba /register)
2. Serveris patikrina ir grąžina ŽETONĄ → { "token": "eyJhbGciOi..." }
3. Klientas žetoną SAUGO
4. (9 pamoka) klientas žetoną SIUNČIA su kiekviena apsaugota užklausa
Tas žetonas — JWT (JSON Web Token): pasirašyta eilutė, kurioje užkoduota, kas vartotojas ir kada raktas nustos galioti (exp). Serveris jį pasirašo savo paslaptimi, tad klientas negali suklastoti.
Du principai, kurie svarbūs jau dabar:
- Slaptažodis niekada nesaugomas telefone. Jį išsiunti vieną kartą; atgal gauni tik žetoną. Pames telefoną — slaptažodžio jame nėra.
- Žetoną reikia saugoti SAUGIAI. Jis = tavo sesija. Paprastas
SharedPreferences— atviras tekstas, jį gali perskaityti (root, atsarginės kopijos). Todėl naudosim šifruotą saugyklą.
Šioje pamokoje realizuojam 1–3 žingsnius (gauti ir saugiai išsaugoti žetoną). 4 žingsnis — žetono siuntimas su užklausomis — 9 pamoka. 8b pamokoje Google prisijungimas duos tą patį žetoną — kontraktas nepasikeis, tik būdas jį gauti.