CodeBlanks Logo Icon CodeBlanks

Özet - Kimlik doğrulama

context, JWT ve protected route'u birleştirerek bir auth akışı yazarsın.

Özet - Kimlik doğrulama

Bu grupta auth context, login, JWT, protected route ve logout kavramlarını öğrendik. AuthContext merkezî state'i taşır; Provider ile tüm uygulamaya açılır. Login, auth.login({ user, token }) ile context'i günceller.

Token SecureStore'a yazılır, isteklerde Authorization: Bearer başlığıyla gönderilir. Protected screen'ler if (!user) ile login'e yönlendirir. Logout, token'ı siler ve setUser(null) yapar. Şimdi bunları birleştirip çalışan bir auth iskeleti yazacağız.

Uygulama Özet - Auth provider iskeleti

AuthProvider bileşenini tamamla. useState(null) ile user state'i tanımla. login işlevi setUser(data) yapsın. AuthContext.Provider ile value={{ user, login }} döndür.

Başlangıç kodu

App.js
import React, { createContext, useState } from 'react';

export const AuthContext = createContext(null);

export function AuthProvider({ children }) {
  // user state, login işlevi ve Provider döndür
}

Örnek çözüm

App.js
import React, { createContext, useState } from 'react';

export const AuthContext = createContext(null);

export function AuthProvider({ children }) {
  const [user, setUser] = useState(null);
  function login(data) {
    setUser(data);
  }
  return (
    <AuthContext.Provider value={{ user, login }}>
      {children}
    </AuthContext.Provider>
  );
}

Uygulama Özet - Full logout

logout işlevini tamamla. await SecureStore.deleteItemAsync('token') ile token'ı sil. setUser(null) ile context'i sıfırla. İşlev async olmalı.

Başlangıç kodu

App.js
import * as SecureStore from 'expo-secure-store';

export function makeFullLogout(setUser) {
  // logout işlevini yaz
}

Örnek çözüm

App.js
import * as SecureStore from 'expo-secure-store';

export function makeFullLogout(setUser) {
  async function logout() {
    await SecureStore.deleteItemAsync('token');
    setUser(null);
  }
  return { logout };
}

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Akış parçalarını eşle

Kavram Anlamı
createContext AuthContext'i oluşturur
login({ user, token }) Context'i günceller
Bearer ${token} Authorization başlığı
deleteItemAsync('token') Logout'ta siler

2 Bearer başlığını yaz

Soru
headers: { Authorization: `Bearer ${____}` }
Cevap
headers: { Authorization: `Bearer ${token}` }

Açıklama: token değişkeni başlığa eklenir.

İleri seviye bölümündeki tüm dersler