Autentificare REST pentru Firebase
- 1 minute de citit
- 4 exemple de cod în JSON
- 1 imagine
Disponibil și în English
Pe această pagină
Salut,
În acest articol îți arăt cum să te autentifici la Firebase și cum să securizezi bazele de date cu câteva reguli de securitate simple. Folosesc această configurație pentru proiectul meu NucuCar.
Autentificare
Primul pas este activarea metodei de autentificare Email/Password, mergând la Authentication și apăsând pe tab-ul Sign-In Method:
Apoi, putem adăuga manual un utilizator apăsând pe tab-ul Users și pe Add user.
Acum, pentru a ne autentifica cu utilizatorul nou creat, facem o cerere POST cu un corp JSON către următorul endpoint:
// POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=WEB_API_KEY { "email": "[email protected]", "password": "your_password", "returnSecureToken": true }Atenție că trebuie să completezi și parametrul WEB_API_KEY! Îl poți obține apăsând pe pictograma roată de setări de lângă Project Overview. Ar trebui să se deschidă tab-ul General, care listează Web API Key.
Dacă autentificarea reușește, vei primi un răspuns similar cu următorul:
{ "kind": "identitytoolkit#VerifyPasswordResponse", "localId": "drH5pThXcuY1V2w2FSVwlaRZXEN2", "email": "[email protected]", "displayName": "", "idToken": "xx.xx.xx-xx-xx-xx", "registered": true, "refreshToken": "xx-xx-xx", "expiresIn": "3600"}Pentru a face cereri autentificate trebuie să trimiți următorul header în toate cererile:
Authentication: Bearer ${idToken}
Ține cont că idToken expiră în 3600 de secunde și va trebui să schimbi refresh token-ul pe un idToken nou, înainte sau după expirare:
// https://securetoken.googleapis.com/v1/token?key=WEB_API_KEY{ "grant_type": "refresh_token", "refresh_token": your_refresh_token}Reguli de securitate
Pentru a securiza baza de date am folosit următoarele reguli de securitate. Acestea nu permit ștergerea și permit doar crearea, actualizarea și citirea documentelor. Ștergerea lor este interzisă.
rules_version = '2';service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow delete: if false; allow create, update, read: if (request.auth != null && request.auth.uid != null); } }}Mulțumesc că ai citit!