Bootcamp i backendudvikling med Node.js · Lektion

Authentication-middleware med JWT

Implementér sikker authentication i Deres Express-app med JSON Web Tokens, og lær at beskytte routes med custom auth-middleware.

Lektion 4 af 413 trin

Authentication-middleware med JWT er en gratis Bootcamp i backendudvikling med Node.js-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Bootcamp i backendudvikling med Node.js, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Bootcamp i backendudvikling med Node.js-kurset indeholder 4 lektioner i alt.

Hvorfor tokens?

HTTP er tilstandsløs: Serveren glemmer dig mellem anmodninger. For at vide hvem der sender en anmodning, sender klienten bevis på sin identitet hver gang.

JSON Web Tokens (JWT) er en populær, tilstandsløs måde at medbringe dette bevis på uden at gemme sessioner på serveren.

Et JWTs opbygning

Et JWT består af tre Base64-sektioner, der er adskilt af punktummer:

  • Header: signeringsalgoritmen
  • Payload: claims som bruger-id og rolle
  • Signatur: bekræfter, at tokenet ikke er blevet ændret

Payloaden er kodet, ikke krypteret – anbring aldrig hemmeligheder i den.

// xxxxx.yyyyy.zzzzz
// header.payload.signature

Installation af jsonwebtoken

Pakken jsonwebtoken håndterer oprettelse og bekræftelse af tokens.

// npm install jsonwebtoken
const jwt = require('jsonwebtoken');

Signering af et token ved login

Når du har bekræftet en brugers legitimationsoplysninger, skal du kalde jwt.sign() med payloaden, en hemmelighed og indstillinger som udløbstid. Send det resulterende token tilbage til klienten.

const token = jwt.sign(
  { userId: user.id, role: user.role },
  process.env.JWT_SECRET,
  { expiresIn: '1h' }
);
res.json({ token });

Afsendelse af tokenet

Klienten gemmer tokenet og sender det tilbage med hver anmodning, normalt i Authorization-headeren ved hjælp af Bearer-skemaet.

// Authorization: Bearer eyJhbGci...

Læsning af tokenet i middleware

Godkendelses-middleware henter tokenet fra headeren. Fjern præfikset Bearer for at få den rå tokenstreng.

function auth(req, res, next) {
  const header = req.get('Authorization') || '';
  const token = header.split(' ')[1];
  // verify next...
}

Bekræftelse af tokenet

jwt.verify() kontrollerer signaturen og udløbstiden. Hvis tokenet er gyldigt, returnerer funktionen den afkodede payload; ellers udløser den en fejl, så pak kaldet ind i try/catch.

try {
  const payload = jwt.verify(token, process.env.JWT_SECRET);
  req.user = payload;
  next();
} catch (err) {
  res.status(401).json({ error: 'Invalid token' });
}

Komplet godkendelses-middleware

Samlet afviser denne middleware manglende eller ugyldige tokens og knytter brugeren til anmodningen, så efterfølgende handlere kan bruge den.

function auth(req, res, next) {
  const token = (req.get('Authorization') || '').split(' ')[1];
  if (!token) return res.status(401).json({ error: 'No token' });
  try {
    req.user = jwt.verify(token, process.env.JWT_SECRET);
    next();
  } catch {
    res.status(401).json({ error: 'Invalid token' });
  }
}

Beskyttelse af ruter

Anvend middleware på alle ruter, der kræver login. Express kører den før handleren og blokerer automatisk anmodninger uden godkendelse.

app.get('/profile', auth, (req, res) => {
  res.json({ id: req.user.userId });
});

Rollebaseret adgangskontrol

Godkendelse svarer på "hvem er du?"; adgangskontrol svarer på "har du tilladelse?". En anden middleware kan kontrollere req.user.role, som blev angivet under godkendelsen.

function requireAdmin(req, res, next) {
  if (req.user.role !== 'admin') {
    return res.status(403).json({ error: 'Forbidden' });
  }
  next();
}
app.delete('/users/:id', auth, requireAdmin, handler);

Bedste sikkerhedspraksis

Beskyt dine tokens:

  • Gem hemmeligheden i en miljøvariabel, aldrig i kode
  • Brug korte udløbstider og refresh-tokens til længere sessioner
  • Send altid data via HTTPS
  • Returnér 401 ved manglende eller ugyldig godkendelse og 403 ved utilstrækkelige tilladelser

Hurtigt tjek

Test din forståelse af JWT-godkendelse.

Opsummering

Du har opbygget tilstandsløs godkendelse med JWT:

  • Signér et token ved login med jwt.sign()
  • Send det via headeren Authorization: Bearer
  • Bekræft det i brugerdefineret middleware med jwt.verify()
  • Tilknyt req.user, og beskyt ruterne
  • Tilføj rollekontrol til adgangskontrollen

Dette er grundlaget for sikre Express-API'er.

Gratis at komme i gang

Lær JavaScript 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
22
Lektioner
92

Ofte stillede spørgsmål

Er lektionen “Authentication-middleware med JWT” gratis?

Ja — hele teksten til “Authentication-middleware med JWT” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Bootcamp i backendudvikling med Node.js-kurset, skal du opgradere til CoddyKit PRO. Bootcamp i backendudvikling med Node.js-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Authentication-middleware med JWT”?

Implementér sikker authentication i Deres Express-app med JSON Web Tokens, og lær at beskytte routes med custom auth-middleware. Du øver dig i Bootcamp i backendudvikling med Node.js 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å Bootcamp i backendudvikling med Node.js?

Der kræves ingen tidligere erfaring. Bootcamp i backendudvikling med Node.js 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 4 af 4.

Hvor lang tid tager lektionen “Authentication-middleware med JWT”?

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 Bootcamp i backendudvikling med Node.js-lektion?

Ja. Alle Bootcamp i backendudvikling med Node.js-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

  1. Udvikling af brugerdefineret Express-middleware
  2. Strategier til global fejlhåndtering
  3. Inputvalidering med Joi/Express-Validator
  4. Authentication-middleware med JWT
← Tilbage til Bootcamp i backendudvikling med Node.js