Godkendelses-middleware
Implementér godkendelsestjek med tRPC-middleware for at beskytte Deres API-procedurer.
Godkendelses-middleware er en gratis Typesikre API'er fra frontend til backend med tRPC-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Typesikre API'er fra frontend til backend med tRPC, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Typesikre API'er fra frontend til backend med tRPC-kurset indeholder 4 lektioner i alt.
Beskyt din API med godkendelse
Velkommen til denne lektion om tRPC-middleware til godkendelse! Det er afgørende at sikre din API, så kun godkendte brugere kan få adgang til følsomme data eller udføre kritiske handlinger.
Middleware i tRPC giver en elegant måde at samle disse sikkerhedskontroller ét sted på, før en procedure køres.
Hvorfor middleware til godkendelse?
Det har flere væsentlige fordele at bruge middleware til godkendelse:
- Centraliseret logik: Definer godkendelsesregler én gang, og anvend dem overalt.
- Mindre gentagelse: Undgå at skrive de samme sikkerhedskontroller i hver API-procedure.
- Ren kode: Hold din forretningslogik adskilt fra sikkerhedshensyn.
- Konsistens: Sørg for, at alle beskyttede endepunkter følger de samme sikkerhedsstandarder.
Grundlæggende om godkendelse
Før vi implementerer det, genopfrisker vi kort nogle almindelige godkendelsesmetoder:
- Tokens: For eksempel JWT'er (JSON Web Tokens) eller API-nøgler, der typisk sendes i en
Authorization-header. - Sessioner: Administreres ofte med cookies, hvor serveren gemmer sessionsdata, og klienten sender et sessions-ID.
Vores middleware har ansvaret for at validere disse legitimationsoplysninger.
Kontekst til brugerdata
Husk, at tRPC-konteksten er et objekt, der er tilgængeligt for alle procedurer og indeholder data, der er specifikke for anmodningen. I forbindelse med godkendelse betyder det, at vores createContext-funktion (fra en tidligere lektion) skal fortolke indkommende godkendelsesoplysninger, f.eks. fra headere, og udfylde konteksten med brugerdata, hvis de er tilgængelige.
Vores middleware vil derefter *læse* disse brugerdata fra konteksten.
Opbygning af middleware til godkendelse
Det er i tRPC's t.middleware()-funktion, at magien sker. Den modtager en asynkron funktion, som modtager et objekt med ctx (konteksten) og next (en funktion, der kalder den næste middleware eller selve proceduren).
Inde i funktionen kontrollerer du godkendelsen. Hvis den lykkes, kalder du next(). Hvis ikke, kaster du en TRPCError.
Enkel middleware til godkendelse
Her er et kørbart TypeScript-eksempel, der simulerer en grundlæggende middleware til godkendelse. Den kontrollerer, om der findes et user-objekt i konteksten.
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();Anvendelse af middleware på procedurer
Når middleware er defineret, kan du anvende den med metoden .use(). Det kan gøres på individuelle procedurer eller på hele routere for at beskytte flere procedurer på én gang.
Middleware kan også kædes sammen, så du kan kombinere flere kontroller, f.eks. godkendelse efterfulgt af autorisation.
Eksempel på en beskyttet forespørgsel
Sådan kan du anvende middlewaret isAuthenticated på en bestemt forespørgselsprocedure. ctx.user vil med sikkerhed eksistere inde i proceduren, hvis middlewaret godkender anmodningen.
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.Håndtering af uautoriseret adgang
Når middlewaret registrerer en anmodning fra en bruger, der ikke er godkendt, og kaster en TRPCError, f.eks. med code: 'UNAUTHORIZED', opfanger tRPC automatisk denne fejl.
Derefter sender det et standardiseret fejl-svar til klienten, så din frontend-applikation kan håndtere den uautoriserede adgang på en god måde, for eksempel ved at omdirigere brugeren til en login-side.
Test din viden om middleware til godkendelse
Du har en isAdmin-middleware. Du vil beskytte alle procedurer i en adminRouter, så kun administratorer kan få adgang til dem. Hvad er den korrekte måde at anvende middlewaret på?
Opsummering af middleware til godkendelse
Du har lært at implementere godkendelseskontroller med tRPC-middleware!
- Middleware til godkendelse samler sikkerhedslogikken ét sted.
- Det bruger tRPC-konteksten til at få adgang til brugeroplysninger.
- Du definerer det med
t.middleware(). - Du anvender det på procedurer eller hele routere med
.use(). TRPCErrorsikrer korrekt fejlhåndtering af uautoriserede anmodninger.
Dernæst skal du udforske, hvordan du opbygger brugerdefinerede middleware-kæder til mere komplekse scenarier!
Lær Typesikre API'er fra frontend til backend med tRPC med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 10
- Lektioner
- 40
Ofte stillede spørgsmål
Er lektionen “Godkendelses-middleware” gratis?
Ja — alle 3 lektioner i læringssporet Typesikre API'er fra frontend til backend med tRPC, inklusive “Godkendelses-middleware”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Typesikre API'er fra frontend til backend med tRPC-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Godkendelses-middleware”?
Implementér godkendelsestjek med tRPC-middleware for at beskytte Deres API-procedurer. Du øver dig i Typesikre API'er fra frontend til backend med tRPC med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Typesikre API'er fra frontend til backend med tRPC?
Der kræves ingen tidligere erfaring. Typesikre API'er fra frontend til backend med tRPC på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Godkendelses-middleware”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Typesikre API'er fra frontend til backend med tRPC-lektion?
Ja. Alle Typesikre API'er fra frontend til backend med tRPC-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Oprettelse af tRPC-context
- Godkendelses-middleware
- Tilpassede middleware-kæder
- Middleware til logging og måling af ydeevne