Korumalı Rotalar ve Kimlik Doğrulama Koruyucuları
Kimliği doğrulanmamış kullanıcıları sarmalayıcı bileşenler veya yükleyici tabanlı koruyucularla giriş sayfasına yönlendirin.
Korumalı Rotalar ve Kimlik Doğrulama Koruyucuları, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.
Rotalar Neden Korunur
Bazı sayfalara (gösterge paneli, profil, yönetici) yalnızca kimliği doğrulanmış kullanıcılar erişebilmelidir. React Router iki yaklaşım sunar: sarmalayıcı bileşenler ve yükleyici tabanlı korumalar.
Kimlik Doğrulama Durumunun Biçimi
Öncelikle, bileşenlerin kullanıcının oturum açıp açmadığını öğrenmek için okuyabileceği bir kimlik doğrulama context'i oluşturunuz.
const AuthContext = React.createContext(null);
function AuthProvider({ children }) {
const [user, setUser] = useState(null);
const login = async (creds) => { const u = await apiLogin(creds); setUser(u); };
const logout = () => setUser(null);
return (
<AuthContext.Provider value={{ user, login, logout }}>
{children}
</AuthContext.Provider>
);
}
export const useAuth = () => useContext(AuthContext);Sarmalayıcı Bileşenle Koruma
Kimlik doğrulamasını denetleyen ve kullanıcı kimliği doğrulanmamışsa giriş sayfasına yönlendiren bir PrivateRoute bileşeni oluşturunuz.
import { Navigate, Outlet } from 'react-router-dom';
function PrivateRoute() {
const { user } = useAuth();
if (!user) return <Navigate to="/login" replace />;
return <Outlet />;
}
// Usage in router:
{ element: <PrivateRoute />, children: [
{ path: '/dashboard', element: <Dashboard /> },
]}Yönlendirme URL'sini Koruma
Kullanıcının denediği URL'yi saklayınız; böylece giriş yaptıktan sonra onu geri gönderebilirsiniz. Bu URL'yi Navigate bileşenindeki state aracılığıyla aktarınız.
function PrivateRoute() {
const { user } = useAuth();
const location = useLocation();
if (!user) {
return <Navigate to="/login" state={{ from: location }} replace />;
}
return <Outlet />;
}
// In login handler:
const location = useLocation();
const from = location.state?.from?.pathname || '/';
navigate(from, { replace: true });Yükleyici Tabanlı Koruma (Veri Yönlendiricisi)
Veri Yönlendiricisi API'sinde rotanın loader işlevine bir kimlik doğrulama denetimi ekleyiniz. Kullanıcının kimliği doğrulanmamışsa bir yönlendirme fırlatınız.
import { redirect } from 'react-router-dom';
function requireAuth() {
const token = localStorage.getItem('token');
if (!token) throw redirect('/login');
return token;
}
const router = createBrowserRouter([
{
path: '/dashboard',
loader: requireAuth,
element: <Dashboard />,
},
]);Role Dayalı Korumalar
Rolleri denetleyecek şekilde korumayı genişletiniz. Kullanıcı gerekli role sahip değilse yetkisiz erişim sayfasına yönlendiriniz.
function AdminRoute() {
const { user } = useAuth();
if (!user) return <Navigate to="/login" replace />;
if (user.role !== 'admin') return <Navigate to="/unauthorized" replace />;
return <Outlet />;
}Kimlik Doğrulama Denetimi Sırasında Yükleme Durumu
Kimlik doğrulama durumu eşzamansız olarak yükleniyorsa (örneğin bir sunucudan), denetim beklemedeyken bir yükleme göstergesi görüntüleyiniz. Böylece giriş sayfasının kısa süreliğine görünmesini önleyebilirsiniz.
function PrivateRoute() {
const { user, isLoading } = useAuth();
if (isLoading) return <Spinner />;
if (!user) return <Navigate to="/login" replace />;
return <Outlet />;
}Birden Çok Rotayı Aynı Anda Koruma
Korunan tüm rotaları tek bir PrivateRoute sarmalayıcısı altında gruplayınız; böylece korumayı her rotada ayrı ayrı tekrarlamanız gerekmez.
const router = createBrowserRouter([
{ path: '/login', element: <Login /> },
{
element: <PrivateRoute />,
children: [
{ path: '/dashboard', element: <Dashboard /> },
{ path: '/profile', element: <Profile /> },
{ path: '/settings', element: <Settings /> },
],
},
]);Token Süresinin Dolmasını İşleme
Token süresinin dolup dolmadığını korumanın içinde veya genel bir aracıda denetleyiniz. Token'ın süresi dolduğunda kullanıcının oturumunu kapatıp giriş sayfasına yönlendiriniz.
function isTokenValid(token) {
const payload = JSON.parse(atob(token.split('.')[1]));
return payload.exp * 1000 > Date.now();
}
function requireAuth() {
const token = localStorage.getItem('token');
if (!token || !isTokenValid(token)) throw redirect('/login');
return token;
}Yenileme Token'ı Akışı
401 durumunda yönlendirme yapmadan önce token yenilemeyi deneyiniz. Yalnızca yenileme de başarısız olursa giriş sayfasına yönlendiriniz.
async function requireAuth() {
let token = localStorage.getItem('token');
if (!token || isExpired(token)) {
token = await refreshToken();
if (!token) throw redirect('/login');
localStorage.setItem('token', token);
}
return token;
}Yeniden Yüklemeler Arasında Kimlik Doğrulamayı Koruma
Kimlik doğrulama token'ını localStorage veya bir HttpOnly çerezinde saklayınız. Uygulama yüklenirken korunan rotaları görüntülemeden önce kimlik doğrulama durumunu yeniden oluşturunuz.
Kısa Kontrol
React Router'da yükleyici tabanlı bir kimlik doğrulama koruması kullanırken, kimliği doğrulanmamış bir kullanıcıyı yönlendirmek için ne fırlatmalısınız?
Özet
Rotaları PrivateRoute sarmalayıcısıyla <Outlet /> kullanarak veya redirect() fırlatan bir yükleyiciyle koruyunuz. Amaçlanan URL'yi gezinme durumunda koruyunuz, kısa süreli görüntülenmeleri önlemek için yükleme durumlarını işleyiniz ve tekrarı önlemek için korunan rotaları gruplayınız.
Sıkça Sorulan Sorular
“Korumalı Rotalar ve Kimlik Doğrulama Koruyucuları” dersi ücretsiz mi?
Evet — “Korumalı Rotalar ve Kimlik Doğrulama Koruyucuları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.
“Korumalı Rotalar ve Kimlik Doğrulama Koruyucuları” dersinde ne öğreneceğim?
Kimliği doğrulanmamış kullanıcıları sarmalayıcı bileşenler veya yükleyici tabanlı koruyucularla giriş sayfasına yönlendirin. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
React Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Korumalı Rotalar ve Kimlik Doğrulama Koruyucuları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu React Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- İç İçe Rotalar ve Outlet Düzenleri
- Yükleyiciler ve Eylemler (Veri Yönlendirici API'si)
- Korumalı Rotalar ve Kimlik Doğrulama Koruyucuları
- URL Arama Parametrelerinde Durum Yönetimi