Aurabase Logosu
aura tabanıdokümanlar
dokümanlar›Kılavuzlar›Authenticate users (SDK)

Kullanıcıların kimliğini JavaScript SDK'sıyla doğrulayın

Çalışan bir yığına karşı gözlemlenen her çağrının davranışıyla birlikte aura.auth günlük akışları.

11 dk. oku·Seviye orta düzey·12 Eki 2026 tarihinde revize edildi
Bu İngilizce metin, Fransızca orijinalinden otomatik olarak oluşturulmuştur ve henüz incelenmemiştir.
Bu çeviriden bu yana İngilizce kaynak değişti. Bazı bilgiler güncelliğini kaybetmiş olabilir.
Bu sayfa otomatik olarak çevrildi. İngilizce versiyonu yetkilidir.
#
Temel bilgiler

1. Kaydolun ve oturum açın

auth.tstypescript
import { createClient, isMfaChallenge } from '@aurabase/aurabase-js'

const aura = createClient(process.env.AURA_URL!, process.env.AURA_ANON_KEY!)

// Hesap oluştur
const { data, error } = await aura.auth.signUp({ email: 'ada@example.com', password: 'a-long-passphrase' })

// Oturum aç
const login = await aura.auth.signInWithPassword({ email: 'ada@example.com', password: 'a-long-passphrase' })
if (login.error) return showError(login.error.message)
if (login.data && isMfaChallenge(login.data)) return askForTotpCode(login.data.mfa_token)
// aksi halde artık bir oturum var

Her iki çağrı da aynı şekli döndürür. Başarılı olduğunda, data access_token, refresh_token, expires_in (900 saniye) ve user öğesini tutar ve istemci oturumu sizin için saklar. Bir sonraki isteğin kimliği zaten doğrulandı.

signUp'nin ne yapacağı proje ayarlarınıza bağlıdır. Test projemizde kullanıcının email_verified: false ile oturum açmasını sağlar ve bir proje öncelikle onay gerektirebilir.

Gözlemlendiği gibi ele almanız gereken arızalar:

AraHata
Yanlış şifre401, code: 'invalid_credentials', "Tanımlayıcılar geçersiz"
Geçersiz veya süresi dolmuş bağlantı veya kod401, code: 'invalid_otp'
Proje izin vermediğinde anonim oturum açma403, FORBIDDEN

signInAnonymously(), e-posta adresi olmayan bir kullanıcı oluşturur, ancak yeni bir projede devre dışı bırakılır ve siz projenin kimlik doğrulama ayarlarında etkinleştirene kadar 403 değerini döndürür.

#
Eyalet

2. Oturum ve etkinlikleri

session.tstypescript
const { data: { session } } = await aura.auth.getSession() // ağ çağrısı yok: mağazayı okur
const { data: user } = await aura.auth.getUser()           // sunucuya sorar

const { data: { subscription } } = aura.auth.onAuthStateChange(({ event, user }) => {
  // olay: 'INITIAL_SESSION' | 'SIGNED_IN' | 'TOKEN_REFRESHED' | 'USER_UPDATED' | 'SIGNED_OUT' | 'MFA_CHALLENGE'
})
subscription.unsubscribe()

Gerçek bir çalıştırma şu diziyi üretti: INITIAL_SESSION, SIGNED_IN (kaydolma), SIGNED_IN (oturum açma), USER_UPDATED, TOKEN_REFRESHED, SIGNED_OUT.

  • İstemci erişim belirtecini süresi dolmadan yeniler. Zorlamak için aura.auth.refreshSession()'yi arayın.
  • getSession() yerel ve hızlıdır: oluşturma için kullanın. Sunucunun mevcut kullanıcı görünümüne ihtiyaç duyduğunuzda getUser() kullanın.
  • İstemciye başka bir yerden (çerez, sunucu) bir oturum aktarmak için setSession(accessToken, refreshToken) kullanın. Geçersiz bir çift reddedilir ve önceki oturum korunur.
  • Sunucu tarafı işleme için bkz. Next.js Uygulama Yönlendiricisi ve SSR.
#
Hesap

3. Profil ve şifre

profile.tstypescript
// Meta veriler: 'veri'ye aktarın
await aura.auth.updateUser({ data: { theme: 'dark', plan: 'free' } })
// → user.user_metadata { plan: 'free', theme: 'dark' } şeklindedir ve getUser() aynı şeyi döndürür

// E-postayı değiştirin: adres henüz DEĞİŞMİYOR
await aura.auth.updateUser({ email: 'new@example.com' })
// Yeni adrese bir onay bağlantısı gider. Kullanılıncaya kadar user.email eski değerini korur.
// Şununla onaylayın: aura.auth.verifyOtp({ type: 'email_change', token })

// Şifreyi değiştir
await aura.auth.updatePassword('a-new-long-passphrase', 'a-long-passphrase')
Şifreyi değiştirmek oturumunuzu kapatır

Şifre değiştiğinde sunucu tüm oturumları iptal eder. updatePassword yerel oturumu temizler ve SIGNED_OUT komutunu verir: yeni parolayla tekrar oturum açın. Gerçek bir çalışmada, çağrının hemen ardından getSession() boştu ve yeni şifreyle oturum açmak işe yaradı.

Şifremi unuttum: aura.auth.resetPasswordForEmail({ email }) sıfırlama e-postasını gönderir. Kullanıcı daha sonra bunu verifyOtp({ type: 'recovery', token, password }) ile tamamlar.

Hesabı sil: aura.auth.deleteUser(password) mevcut şifreyi sorar, hesabı siler ve yerel oturumu temizler.

#
Alternatifler

4. Bağlantılar, kodlar ve OAuth

passwordless.tstypescript
// E-postayla sihirli bağlantı
await aura.auth.signInWithMagicLink({ email })
// → { message: "E-posta mevcutsa, bir temsilciye bağlantı izni verilir" }
// Hesap var olsa da olmasa da cevap aynıdır: hesapları sızdırmaz.

// Tek kullanımlık kodlar
await aura.auth.signInWithEmailOtp(email)
await aura.auth.signInWithSmsOtp(phone)
await aura.auth.verifyOtp({ type: 'email', email, code })     // ayrıca: 'sms', 'magiclink', 'kaydolma', 'kurtarma', 'email_change'

// OAuth: sağlayıcı İLK argümandır, bir dizedir
const { data } = await aura.auth.signInWithOAuth('google', { redirectTo: 'https://app.example.com/callback' })
window.location.href = data!.url

signInWithOAuth açılacak URL'yi döndürür; kendi başına gezinmez. Sağlayıcının projede etkinleştirilmesi ve yapılandırılması gerekir, aksi takdirde başlangıç ​​URL'si PROVIDER_NOT_CONFIGURED yanıtını verir.

supabase-js formu değil

signInWithOAuth({ provider: 'google' }), invalid_provider hatasını döndürür. Sağlayıcıyı ilk argüman olarak iletin.

Geri yönlendirmeden sonra istemci, oturumu URL'den kendisi okur (detectSessionInUrl). PKCE akışı için flowType: 'pkce' iletin, varsayılan kalıcı depoyu koruyun ve istemci kodu sizin için değiştirir.

İkinci bir sağlayıcıyı linkIdentity(provider) ile oturum açmış bir hesaba bağlayın, bunları listIdentities() ile listeleyin ve unlinkIdentity(identityId) ile birini kaldırın.

#
İkinci faktör

5. Çok faktörlü kimlik doğrulama

mfa.tstypescript
// 1. Kayıt olun: otpauth_url'den oluşturulan QR kodunu gösterin
const { data: enrol } = await aura.auth.mfaEnroll()   // → { gizli, otpauth_url }
// 2. Kimlik doğrulama uygulamasından gelen ilk kodu kullanarak onaylayın: kurtarma kodlarını alırsınız
const { data: confirm } = await aura.auth.mfaVerifySetup(codeFromApp) // → { kurtarma_kodları: [...] }

// 3. Şu andan itibaren oturum açmak oturum yerine sorgulamayla sonuçlanacak
const login = await aura.auth.signInWithPassword({ email, password })
if (login.data && isMfaChallenge(login.data)) {
  await aura.auth.mfaVerify({ mfa_token: login.data.mfa_token, code: codeFromApp })
}

mfaUnenroll(password) bunu kapatır ve regenerateRecoveryCodes(code) yeni kurtarma kodları verir. Bir sınama MFA_CHALLENGE yayar ve mfaVerify başarılı olana kadar hiçbir oturum saklanmaz.

#
Cihazlar

6. Cihazlar ve oturumlar

devices.tstypescript
const { data } = await aura.auth.listSessions()
// [{ kimlik, cihaz_bilgisi, ip_adresi, oluşturulan_at, sona erme_at, son_used_at, is_current }, …]

await aura.auth.revokeSession(sessionId)   // bir cihazdan çıkış yap
await aura.auth.revokeAllSessions()        // bu da dahil her yerden çıkış yapın
await aura.auth.signOut()                  // yalnızca bu cihaz

is_current kullandığınız oturumu işaretler. signOut sunucuda yenileme belirteci varsa onu iptal eder, yerel oturumu temizler ve SIGNED_OUT yayınlar.

#
Sunucu

7. Kullanıcıları yönetin

Kullanıcı yönetiminin bir service_role anahtarına ihtiyacı vardır. Yalnızca sunucuda kullanılabilir: tarayıcıda aura.authAdmin okunması hataya neden olur.

server/users.tstypescript
import { createAdminClient } from '@aurabase/aurabase-js'

const admin = createAdminClient(process.env.AURA_URL!, process.env.AURA_SERVICE_ROLE_KEY!)

const { data: users } = await admin.authAdmin.listUsers({ limit: 20, search: 'ada' })
const { data: created } = await admin.authAdmin.createUser({ email: 'bob@example.com', password: 'a-long-passphrase', email_verified: true })
await admin.authAdmin.banUser(created!.id)
await admin.authAdmin.unbanUser(created!.id)
const { data: link } = await admin.authAdmin.generateLink(created!.id, 'magic') // → { bağlantı, belirteç }
await admin.authAdmin.deleteUser(created!.id)

const { data: stats } = await admin.authAdmin.getUserStats() // → { toplam, doğrulandı, yasaklandı, mfa_enabled, new_7d }

generateLink, 'magic', 'recovery' veya 'invite' kabul eder. Yönetici istemcisi ayrıca projenin kimlik doğrulama ayarlarını (getSettings, updateSettings), e-posta şablonlarını, her kullanıcının oturumlarını ve denetim günlüğünü (getAuditLog) yönetir. Her yöntem kimlik doğrulama referansında listelenir.