Håndtering av brukerøkter og profiler
Lær hvordan De håndterer brukerøkter, henter brukermetadata og oppdaterer brukerprofiler på en sikker måte i applikasjonen.
Håndtering av brukerøkter og profiler er en gratis leksjon i Supabase som backend som tjeneste på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Supabase som backend som tjeneste, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Supabase som backend som tjeneste inneholder totalt 4 leksjoner.
Introduksjon til brukerøkter og profiler
Velkommen! I denne leksjonen skal vi se nærmere på hvordan du administrerer brukerøkter og oppdaterer brukerprofiler på en sikker måte med Supabase.
Når en bruker logger inn, oppretter Supabase en økt. Denne økten holder oversikt over hvem brukeren er, og sørger for at brukeren fortsatt er autentisert på tvers av forespørsler.
En brukers profil inneholder ofte opplysninger som navn, avatar eller innstillinger. Supabase hjelper deg med å lagre og administrere disse dataene.
Få tilgang til den gjeldende økten
For å samhandle med den innloggede brukeren må du først få tilgang til brukerens økt. Supabase lagrer økttokener på en sikker måte, vanligvis i local storage eller informasjonskapsler.
Du kan hente den aktive økten med supabase.auth.getSession(). Dette kallet returnerer et Promise som løses med øktdataene.
import { createClient } from '@supabase/supabase-js';
const supabaseUrl = 'YOUR_SUPABASE_URL';
const supabaseAnonKey = 'YOUR_SUPABASE_ANON_KEY';
const supabase = createClient(supabaseUrl, supabaseAnonKey);
async function getCurrentSession() {
const { data: { session }, error } = await supabase.auth.getSession();
if (error) {
console.error('Error getting session:', error.message);
return;
}
if (session) {
console.log('Current session:', session);
console.log('User ID:', session.user.id);
console.log('User email:', session.user.email);
} else {
console.log('No active session.');
}
}
getCurrentSession();Utforske brukerobjektet
session-objektet inneholder en user-egenskap med viktig informasjon om den autentiserte brukeren.
Viktige egenskaper i user-objektet inkluderer:
id: En unik identifikator for brukeren.email: Brukerens e-postadresse.created_at: Tidspunktet da brukerkontoen ble opprettet.user_metadata: Et JSON-objekt for egendefinerte profildata.
Vi lagrer ofte ting som brukerens visningsnavn eller avatar-URL i user_metadata.
Få tilgang til brukerprofildata
Feltet user_metadata i brukerobjektet er stedet der du kan lagre egendefinert profilinformasjon. Disse dataene er en del av autentiseringstjenesten, ikke av hovedtabellene i databasen.
Det er et fleksibelt JSON-objekt som lar deg lagre ulike detaljer direkte knyttet til brukerens autentiseringsoppføring.
import { createClient } from '@supabase/supabase-js';
const supabaseUrl = 'YOUR_SUPABASE_URL';
const supabaseAnonKey = 'YOUR_SUPABASE_ANON_KEY';
const supabase = createClient(supabaseUrl, supabaseAnonKey);
async function getUserProfile() {
const { data: { user }, error } = await supabase.auth.getUser();
if (error) {
console.error('Error getting user:', error.message);
return;
}
if (user) {
console.log('User ID:', user.id);
console.log('Email:', user.email);
console.log('User Metadata:', user.user_metadata);
// Access specific metadata
const displayName = user.user_metadata?.display_name || 'Guest';
console.log('Display Name:', displayName);
} else {
console.log('No user logged in.');
}
}
getUserProfile();Endre brukerprofildata
For å oppdatere en brukers profilinformasjon, nærmere bestemt user_metadata, bruker du metoden supabase.auth.updateUser().
Du sender et objekt til denne metoden med en data-egenskap som inneholder de nye user_metadata-dataene. Supabase slår sammen de nye dataene med eventuell eksisterende metadata.
- Sikkerhetsmerknad: Sørg alltid for at du har riktige Row-Level Security (RLS)-policyer i databasen hvis du lagrer sensitive profildata der. For
user_metadatahåndterer Supabase sikkerheten.
Oppdater brukermetadata direkte
La oss oppdatere en brukers visningsnavn og legge til en avatar-URL i user_metadata.
Husk at egenskapen data brukes til felt som user_metadata. Andre felt, som email eller password, oppdateres på en annen måte.
import { createClient } from '@supabase/supabase-js';
const supabaseUrl = 'YOUR_SUPABASE_URL';
const supabaseAnonKey = 'YOUR_SUPABASE_ANON_KEY';
const supabase = createClient(supabaseUrl, supabaseAnonKey);
async function updateProfile() {
// This assumes a user is already logged in
const { data: { user }, error: getUserError } = await supabase.auth.getUser();
if (getUserError || !user) {
console.error('No user logged in or error getting user:', getUserError?.message);
return;
}
const { data, error } = await supabase.auth.updateUser({
data: {
display_name: 'Coddy Learner',
avatar_url: 'https://example.com/coddy_avatar.png'
}
});
if (error) {
console.error('Error updating user metadata:', error.message);
} else {
console.log('Profile updated successfully!', data.user.user_metadata);
}
}
// In a real app, you'd call this after a user logs in
// or on a profile settings page.
// For this example, assume a user is logged in.
updateProfile();Endre e-postadresse og passord
I tillegg til user_metadata kan brukere også oppdatere e-postadressen og passordet sitt.
- Oppdatere e-postadresse: Krever en bekreftelsesflyt. Brukeren mottar en e-post med en lenke for å bekrefte den nye adressen.
- Oppdatere passord: Endrer passordet direkte. Av sikkerhetshensyn bør du alltid be brukeren om å autentisere seg på nytt eller oppgi det nåværende passordet før endringen tillates.
Dette håndteres også via supabase.auth.updateUser(), men du sender egenskapen email eller password direkte, ikke inni data-objektet.
Avslutte en brukerøkt
Når en bruker vil logge ut, må du avslutte den aktive økten. Dette fjerner autentiseringstokenene på en sikker måte og hindrer videre tilgang til beskyttede ressurser.
Metoden supabase.auth.signOut() håndterer denne prosessen for deg. Den ugyldiggjør økten og sletter eventuelle lagrede tokener.
Etter utlogging er det god praksis å viderekoble brukeren til en offentlig side (for eksempel innloggingssiden) og slette all klienttilstand i applikasjonen som er knyttet til brukeren.
Logge ut en bruker
Denne enkle kodebiten viser hvordan du logger ut en bruker. Etter dette vil økten være ugyldig.
import { createClient } from '@supabase/supabase-js';
const supabaseUrl = 'YOUR_SUPABASE_URL';
const supabaseAnonKey = 'YOUR_SUPABASE_ANON_KEY';
const supabase = createClient(supabaseUrl, supabaseAnonKey);
async function signOutUser() {
const { error } = await supabase.auth.signOut();
if (error) {
console.error('Error signing out:', error.message);
} else {
console.log('User signed out successfully!');
// You might redirect the user here
// window.location.href = '/login';
}
}
// Call this function when a user clicks a "Logout" button
signOutUser();Sikkerhet ved profiladministrasjon
Sikkerhet er avgjørende når du administrerer brukerprofiler:
- Row-Level Security (RLS): Hvis du lagrer profildata i separate databasetabeller (for eksempel en
profiles-tabell), må du alltid implementere RLS for å sikre at brukere bare kan lese og oppdatere sine egne data. - Validering på klientsiden: Selv om dette er viktig for brukeropplevelsen, må du aldri stole utelukkende på validering på klientsiden. Valider alltid dataene på serveren (for eksempel med Edge Functions eller databasebegrensninger).
- Sensitive data: Unngå å lagre svært sensitive opplysninger direkte i
user_metadata. For virkelig sensitive data bør du vurdere kryptert lagring eller egne, strengt kontrollerte databasetabeller.
Kontroll av profiloppdatering
Du vil oppdatere en brukers visningsnavn og favorittfarge, som lagres i brukerens egendefinerte profildata.
Hvilken metode og egenskap bør du bruke med Supabase-klientbiblioteket?
Oppsummering av økter og profiler
Godt jobbet! Du har lært hvordan du administrerer brukerøkter og profiler:
- Fikk tilgang til den gjeldende brukerens økt og
user-objekt. - Hentet og oppdaterte egendefinerte
user_metadataved hjelp avsupabase.auth.updateUser({ data: {...} }). - Forsto hvordan oppdatering av e-postadresse og passord håndteres.
- Implementerte utlogging av brukere med
supabase.auth.signOut(). - Gikk gjennom viktige sikkerhetshensyn for profildata.
Deretter kan du utforske integrering av sosial pålogging eller avansert RLS for profiltabeller!
Lær deg Supabase som backend som tjeneste med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 11
- Leksjoner
- 40
Ofte stilte spørsmål
Er leksjonen «Håndtering av brukerøkter og profiler» gratis?
Ja – hele teksten i «Håndtering av brukerøkter og profiler» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Supabase som backend som tjeneste-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Supabase som backend som tjeneste inneholder totalt 4 leksjoner.
Hva lærer jeg i «Håndtering av brukerøkter og profiler»?
Lær hvordan De håndterer brukerøkter, henter brukermetadata og oppdaterer brukerprofiler på en sikker måte i applikasjonen. Du øver på Supabase som backend som tjeneste med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Supabase som backend som tjeneste?
Ingen tidligere erfaring er nødvendig. Supabase som backend som tjeneste på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Håndtering av brukerøkter og profiler»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Supabase som backend som tjeneste-leksjonen?
Ja. Alle Supabase som backend som tjeneste-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Brukerregistrering med e-post og passord
- Sosiale innlogginger (OAuth-leverandører)
- Håndtering av brukerøkter og profiler
- Passordtilbakestilling og autentisering med magic link