tRPC'yi React Query ve Kimlik Doğrulamayla Entegrasyon
tRPC'nin React Query entegrasyonunu yapılandırın, kimlik doğrulama başlıkları ekleyin ve korumalı yordamları yönetin.
tRPC'yi React Query ve Kimlik Doğrulamayla Entegrasyon, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 4. 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.
tRPC Bağlamı: İstek Başına Veriler
tRPC bağlamı, createTRPCContext işlevi tarafından her istek için baştan oluşturulan bir nesnedir. Bu nesne, yordamlarınızın ihtiyaç duyduğu veritabanı istemcisini, kimliği doğrulanmış oturumu, istek üstbilgilerini veya istek başına diğer verileri içerebilir.
Bağlam oluşturma işlemi herhangi bir yordamdan önce gerçekleşir; bu nedenle kimlik doğrulama ve veritabanı bağlantısı kurulumunu yapmak için doğru yerdir.
NextAuth ile Bağlama Oturum Ekleme
createTRPCContext içinde next-auth/next kaynağından getServerSession(authOptions) çağrısını yapın. Sonucu bağlam nesnesine ekleyin: return { session: await getServerSession(authOptions), db }. Artık tüm yordamlar ctx.session değerine erişebilir.
Oturum null ise kullanıcı kimlik doğrulaması yapmamıştır. Yordamlar bunu denetleyerek verileri koşullu olarak döndürebilir veya hata fırlatabilir.
Korumalı Yordam Oluşturma
ctx.session değerini denetleyen bir ara katman yazılımı tanımlayın: const isAuthenticated = t.middleware(({ ctx, next }) => { if (!ctx.session) throw new TRPCError({ code: 'UNAUTHORIZED' }); return next({ ctx: { session: ctx.session } }); }).
next() çağrısı, daraltılmış bağlamı (null olmayan oturumla) sonraki ara katman yazılımlarına ve yordam işleyicisine aktarır.
protectedProcedure Tanımı
Ara katman yazılımını publicProcedure ile birleştirin: const protectedProcedure = publicProcedure.use(isAuthenticated). Artık protectedProcedure.query() veya protectedProcedure.mutation() ile tanımlanan her işleyici, ctx içinde null olmayan bir oturuma otomatik olarak sahip olur.
TypeScript, işleyiciye ulaşmadan önce ara katman yazılımı hata fırlatmış olacağından, korumalı yordamların içinde ctx.session değerinin null olmadığını çıkarır.
protectedProcedure Kullanımı
Kimlik doğrulaması gerektiren uç noktalar için publicProcedure yerine protectedProcedure kullanın: protectedProcedure.query(({ ctx }) => getProfileFor(ctx.session.user.id)). TypeScript burada ctx.session değerinin null olmadığını bilir; bu nedenle ctx.session.user.id değerine null denetimi yapmadan güvenle erişebilirsiniz.
Kimlik doğrulaması yapılmamış istekler, işleyici çalıştırılmadan önce otomatik olarak 401 UNAUTHORIZED yanıtı alır.
İstemciden Kimlik Doğrulama Üstbilgileri Gönderme
httpBatchLink'e bir üstbilgi işlevi aktarın: links: [httpBatchLink({ url: '/api/trpc', headers: async () => { const token = await getToken(); return { Authorization: 'Bearer ' + token }; } })]. Bu işlev, her istek grubundan önce çalışır.
Bu yöntem, React Native istemcisinden veya kendi kimlik doğrulama belirteçlerini yöneten Next.js dışı herhangi bir istemciden tRPC ile kimlik doğrulaması yapılırken kullanılır.
createServerSideHelpers ile Sunucu Taraflı Oluşturma
Next.js Sayfalar Yönlendiricisi'nde SSR için sunucu taraflı bir yardımcı oluşturun: createServerSideHelpers({ router: appRouter, ctx: await createContext({ req, res }) }). getServerSideProps içinde helpers.post.getAll.prefetch() kullanın.
Önceden getirilen durumu dehydrate(queryClient) ile ayrıştırın ve props olarak aktarın. İstemci tarafında QueryClient bu durumdan hidrate olur ve ilk yüklemede yeniden veri alınmasını önler.
SSR için tRPC Sorgu Önbelleğini İstemciye Aktarma
Next.js içindeki _app.tsx dosyasını @tanstack/react-query paketindeki Hydrate ile sarın. pageProps.trpcState değerini state özelliğine aktarın. Bu işlem, serileştirilmiş sunucu durumundaki önceden getirilmiş sorgu önbelleğini istemcide geri yükler.
Bu kurulumla kullanıcılar, ilk gezinmede istemci tarafı yükleme göstergeleri görmeden içeriği tamamen doldurulmuş sayfaları hemen görür.
TRPCError Kodları
Uygun HTTP anlamsal kodlarıyla TRPCError fırlatın: UNAUTHORIZED (401), FORBIDDEN (403), NOT_FOUND (404), BAD_REQUEST (400), INTERNAL_SERVER_ERROR (500). tRPC istemcisi bunları kanca sonucundaki uygun hata durumlarına dönüştürür.
Mesaj alanı, kullanıcıya gösterilecek ayrıntıları içerebilir; ancak üretim ortamındaki hata mesajlarında hassas sunucu bilgilerinin açığa çıkmasını önleyin.
React Native ile tRPC
tRPC, aynı AppRouter türünü kullanan React Native istemcileriyle çalışır. httpBatchLink'i httpLink ile değiştirin (RN fetch aynı şekilde çalışır) ve kimlik doğrulama üstbilgilerini yapılandırın. @trpc/react-query bağdaştırıcısı, web kurulumuyla aynı şekilde çalışır.
Bu, bir monorepo'nun bir Next.js web uygulaması ile bir Expo React Native uygulaması arasında tek bir tRPC yönlendiricisini paylaşabilmesi ve her ikisinde de tam tür güvenliği sağlaması anlamına gelir.
Role Dayalı Yetkilendirme
Rol tabanlı erişim için ara katman yazılımı desenini genişletin: ctx.session.user.role değerini denetleyin ve rol yetersizse TRPCError({ code: 'FORBIDDEN' }) fırlatın. Yalnızca yöneticilere açık uç noktalar için adminProcedure = publicProcedure.use(isAdmin) oluşturun.
Karmaşık yetkilendirme için birden çok ara katman yazılımını üst üste ekleyin: publicProcedure.use(isAuthenticated).use(hasFeatureFlag('beta')).query(...).
tRPC Korumalı Yordamı
Kimlik doğrulamayı zorunlu kılmak için tRPC'de korumalı bir yordam nasıl oluşturulur?
Ders Özeti
tRPC bağlamı istek başına oluşturulur ve oturumu, veritabanı istemcisini ve istek kapsamındaki diğer verileri içerir. Korumalı yordamlar, oturumu denetleyen bir ara katman yazılımının .use() ile publicProcedure üzerine birleştirilmesiyle oluşturulur. Sunucu taraflı oluşturma, önceden veri getirmek için createServerSideHelpers'ı; istemcide önbelleği geri yüklemek için ise Hydrate'ı kullanır.
Next.js dışındaki istemciler için kimlik doğrulama üstbilgileri, httpBatchLink üzerindeki headers seçeneği aracılığıyla aktarılır.
Sıkça Sorulan Sorular
“tRPC'yi React Query ve Kimlik Doğrulamayla Entegrasyon” dersi ücretsiz mi?
Evet — “tRPC'yi React Query ve Kimlik Doğrulamayla Entegrasyon” 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.
“tRPC'yi React Query ve Kimlik Doğrulamayla Entegrasyon” dersinde ne öğreneceğim?
tRPC'nin React Query entegrasyonunu yapılandırın, kimlik doğrulama başlıkları ekleyin ve korumalı yordamları yönetin. 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 4. dersidir.
“tRPC'yi React Query ve Kimlik Doğrulamayla Entegrasyon” 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
- tRPC'nin Çözdüğü Sorun
- React ve Next.js ile tRPC Kurulumu
- Sorgular, Değişiklikler ve Abonelikler
- tRPC'yi React Query ve Kimlik Doğrulamayla Entegrasyon