Todennusmiddleware
Toteuttakaa todennustarkistukset tRPC-middlewarella API-proseduurien suojaamiseksi.
Todennusmiddleware on ilmainen tRPC:n tyyppiturvalliset API:t päästä päähän-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu tRPC:n tyyppiturvalliset API:t päästä päähän-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. tRPC:n tyyppiturvalliset API:t päästä päähän-kurssilla on yhteensä 4 oppituntia.
Suojaa API:si todennuksella
Tervetuloa tRPC:n todennusmiddlewareä käsittelevään oppituntiin! API:n suojaaminen on tärkeää, jotta vain valtuutetut käyttäjät voivat käyttää arkaluonteisia tietoja tai suorittaa kriittisiä toimintoja.
tRPC:n middleware tarjoaa tyylikkään tavan keskittää nämä tarkistukset ennen minkään proseduurin suorittamista.
Miksi todennusmiddlewareä tarvitaan?
Todennuksen käyttäminen middlewaressa tarjoaa merkittäviä etuja:
- Keskitetty logiikka: Määritä todennussäännöt kerran ja sovella niitä kaikkialla.
- Vähemmän toistoa: Vältä samojen tietoturvatarkistusten kirjoittamista jokaiseen API-proseduuriin.
- Selkeä koodi: Pidä liiketoimintalogiikka erillään tietoturvaan liittyvistä huolenaiheista.
- Yhdenmukaisuus: Varmista, että kaikki suojatut päätepisteet noudattavat samoja tietoturvastandardeja.
Todennuksen perusteet
Palautetaan ennen toteutusta lyhyesti mieleen yleiset todennusmenetelmät:
- Tunnisteet: Esimerkiksi JWT:t (JSON Web Tokenit) tai API-avaimet, jotka lähetetään yleensä
Authorization-otsakkeessa. - Istunnot: Usein evästeillä hallittuja; palvelin tallentaa istuntotiedot ja asiakas lähettää istunnon tunnisteen.
Middlewaremme tehtävänä on vahvistaa nämä tunnistetiedot.
Käyttäjätietojen konteksti
Muistattehan, että tRPC:n konteksti on kaikille proseduureille saatavilla oleva objekti, joka sisältää pyyntökohtaisia tietoja. Todennuksessa tämä tarkoittaa, että createContext-funktion (edelliseltä oppitunnilta) tulee jäsentää saapuvat todennustiedot, esimerkiksi otsakkeista, ja täyttää konteksti käyttäjätiedoilla, jos niitä on saatavilla.
Middlewaremme sitten *lukee* nämä käyttäjätiedot kontekstista.
Todennusmiddlewaren rakentaminen
tRPC:n t.middleware()-funktio on paikka, jossa varsinainen taika tapahtuu. Se ottaa vastaan asynkronisen funktion, joka saa objektin, jossa ovat ctx (konteksti) ja next (funktio, jolla kutsutaan seuraavaa middlewareä tai itse proseduuria).
Sen sisällä tarkistetaan todennus. Jos se onnistuu, kutsutaan next()-funktiota. Muussa tapauksessa heitetään TRPCError.
Yksinkertainen todennusmiddleware
Tässä on suoritettava TypeScript-esimerkki, joka simuloi yksinkertaista todennusmiddlewareä. Se tarkistaa, onko kontekstissa user-objekti.
class TRPCError extends Error {
code: string;
constructor(opts: { code: string }) {
super(`TRPCError: ${opts.code}`);
this.code = opts.code;
}
}
type MockContext = { user?: { id: string; name: string } };
type MiddlewareFn = (opts: { ctx: MockContext; next: Function }) => Promise<any>;
const isAuthenticated: MiddlewareFn = async ({ ctx, next }) => {
if (!ctx.user) {
throw new TRPCError({ code: 'UNAUTHORIZED' });
}
return next({
ctx: {
...ctx,
user: ctx.user,
},
});
};
async function runMiddlewareDemo() {
console.log("--- Test with authenticated user ---");
try {
await isAuthenticated({
ctx: { user: { id: "123", name: "Alice" } },
next: async (opts: { ctx: MockContext }) => {
console.log("Middleware passed. User:", opts.ctx.user?.name);
return "Success";
}
});
} catch (error) {
console.error("Error:", error instanceof TRPCError ? error.code : String(error));
}
console.log("\n--- Test with unauthenticated user ---");
try {
await isAuthenticated({
ctx: {}, // No user in context
next: async (opts: { ctx: MockContext }) => {
console.log("Middleware passed (should not happen)");
return "Success";
}
});
} catch (error) {
console.error("Error:", error instanceof TRPCError ? error.code : String(error));
}
}
runMiddlewareDemo();Middlewaren käyttäminen proseduureissa
Kun middleware on määritelty, voitte ottaa sen käyttöön .use()-metodilla. Sen voi tehdä yksittäisissä proseduureissa tai jopa kokonaisissa reitittimissä, jolloin useita proseduureja voidaan suojata kerralla.
Middlewarejä voi myös ketjuttaa, jolloin useita tarkistuksia voidaan yhdistää, esimerkiksi todennus ja sen jälkeen valtuutus.
Suojatun kyselyn esimerkki
Näin voitte ottaa isAuthenticated-middlewaren käyttöön tietyssä kyselyproseduurissa. ctx.user on proseduurin sisällä varmasti olemassa, jos middleware läpäisee tarkistuksen.
import { t } from './trpc'; // Your tRPC instance
import { isAuthenticated } from './middleware'; // Your auth middleware
// Imagine 'z' is imported for input validation from Zod
// import { z } from 'zod';
const appRouter = t.router({
publicGreeting: t.procedure
.query(() => {
return "Hello, stranger!";
}),
protectedGreeting: t.procedure
.use(isAuthenticated) // Apply the middleware here
.query(({ ctx }) => {
// ctx.user is guaranteed to exist here due to middleware
return `Welcome, ${ctx.user.name}! You are authenticated.`;
}),
});
// This is a conceptual snippet and not runnable standalone.Luvattoman käytön käsittely
Kun middleware havaitsee todentamattoman pyynnön ja heittää TRPCError-virheen, esimerkiksi arvolla code: 'UNAUTHORIZED', tRPC sieppaa virheen automaattisesti.
Sen jälkeen se lähettää asiakkaalle yhdenmukaisen virhevastaauksen, jolloin käyttöliittymäsovellus voi käsitellä luvattoman käytön hallitusti, esimerkiksi ohjaamalla käyttäjän kirjautumissivulle.
Testaa todennusmiddlewaren tuntemuksesi
Käytössäsi on isAdmin-middleware. Haluat suojata kaikki adminRouter-reitittimen proseduurit niin, että vain ylläpitäjät voivat käyttää niitä. Mikä on oikea tapa ottaa middleware käyttöön?
Todennusmiddlewaren kertaus
Olette oppineet toteuttamaan todennustarkistuksia tRPC-middlewaren avulla!
- Todennusmiddleware keskittää tietoturvalogiikan.
- Se hyödyntää tRPC:n kontekstia käyttäjätietojen käyttämiseen.
- Se määritellään käyttämällä
t.middleware()-funktiota. - Se otetaan käyttöön proseduureissa tai kokonaisissa reitittimissä käyttämällä
.use()-metodia. TRPCErrorvarmistaa luvattomien pyyntöjen asianmukaisen virheenkäsittelyn.
Seuraavaksi tutustutte mukautettujen middleware-ketjujen rakentamiseen monimutkaisempia tilanteita varten!
Opi tRPC:n tyyppiturvalliset API:t päästä päähän tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 10
- Oppitunnit
- 40
Usein kysytyt kysymykset
Onko oppitunti ”Todennusmiddleware” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa tRPC:n tyyppiturvalliset API:t päästä päähän-oppimispolun 3 oppituntia, myös oppitunnin “Todennusmiddleware”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. tRPC:n tyyppiturvalliset API:t päästä päähän-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Todennusmiddleware”?
Toteuttakaa todennustarkistukset tRPC-middlewarella API-proseduurien suojaamiseksi. Harjoittelet tRPC:n tyyppiturvalliset API:t päästä päähän-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni tRPC:n tyyppiturvalliset API:t päästä päähän-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin tRPC:n tyyppiturvalliset API:t päästä päähän-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Todennusmiddleware”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä tRPC:n tyyppiturvalliset API:t päästä päähän-oppitunnilla?
Kyllä. Jokainen tRPC:n tyyppiturvalliset API:t päästä päähän-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- tRPC-kontekstin luominen
- Todennusmiddleware
- Mukautetut middleware-ketjut
- Lokitus- ja suorituskyvyn mittausmiddleware