Namų darbas — dvi sesijos, apsaugotas maršrutas
Padaryk savą.
-
Dvi sesijos, vienas vartotojas. Prisijunk įprastoje naršyklėje ir privačiame lange —
SELECT count(*) FROM sessionsdabar 2 (du įrenginiai, du žetonai, tas pats vartotojas). Atsijunk iš vieno; kitas vis dar veikia. Serverio pusės sesijos yra pagal įrenginį, ir gali atšaukti po vieną — verta įvertinti prieš 14 pamokos JWT palyginimą. -
Stebėk, kaip
LoadUseranotuoja anonimiškai. Atsijunk, tada aplankyk viešą pradinį puslapį. Jis atsivaizduoja gerai (prisijungimo nereikia) —LoadUsersuveikė, nerado galiojančio slapuko ir praleido užklausą kaip anoniminę. Dabar prisijunk ir vėl aplankyk/:Homenauja šaka nukreipia tave į/dashboard. Tas pats apdorotojas, du elgesiai, valdomi konteksto. -
Apsaugok savo maršrutą. Pridėk
GET /accountRequireAuthgrupėje su apdorotoju, atvaizduojančiu paprastą templ puslapį su vartotojo el. paštu (UserFrom(r.Context())). Patvirtink, kad jis nukreipia į/loginatsijungus ir atvaizduoja prisijungus.
Kur einam toliau — spąstų pamoka. Tavo prisijungimo, registracijos ir atsijungimo formos dabar POST'ina laimingai. Neturėtų. Bet kuri kita svetainė galėtų POST'inti į tavo /logout (ar blogiau) tavo vartotojų vardu — tai CSRF. 6 pamoka prideda gorilla/csrf… ir tą akimirką, kai tai padarysi, vienos iš šių formų pateikimas per http://localhost nulūžta su 403 Forbidden — referer not supplied: klaida, kuri nieko nepaaiškina. Pirma į ją pataikysi, tada sužinosi, ką tiksliai CSRF apsauga tikrina ir kodėl tas pranešimas atsiranda. Jos derinimas ir yra pamoka.