Tema
/
Interneto svetainių serverio dalies kūrimas GO
📖 Teorija

Namų darbas — dvi sesijos, apsaugotas maršrutas

Padaryk savą.

  1. Dvi sesijos, vienas vartotojas. Prisijunk įprastoje naršyklėje ir privačiame lange — SELECT count(*) FROM sessions dabar 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ą.

  2. Stebėk, kaip LoadUser anotuoja anonimiškai. Atsijunk, tada aplankyk viešą pradinį puslapį. Jis atsivaizduoja gerai (prisijungimo nereikia) — LoadUser suveikė, nerado galiojančio slapuko ir praleido užklausą kaip anoniminę. Dabar prisijunk ir vėl aplankyk /: Home nauja šaka nukreipia tave į /dashboard. Tas pats apdorotojas, du elgesiai, valdomi konteksto.

  3. Apsaugok savo maršrutą. Pridėk GET /account RequireAuth grupėje su apdorotoju, atvaizduojančiu paprastą templ puslapį su vartotojo el. paštu (UserFrom(r.Context())). Patvirtink, kad jis nukreipia į /login atsijungus 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.