0Pricing
Node.js Backend Development Bootcamp · Урок

Промежуточное ПО аутентификации с JWT

Добавьте безопасную аутентификацию в приложение Express с помощью веб-токенов JSON и научитесь защищать маршруты с помощью собственного промежуточного ПО аутентификации.

«Промежуточное ПО аутентификации с JWT» — бесплатный урок Node.js Backend Development Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Node.js Backend Development Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Node.js Backend Development Bootcamp содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Why Tokens?

HTTP is stateless: the server forgets you between requests. To know who is making a request, the client sends proof of identity each time.

JSON Web Tokens (JWT) are a popular, stateless way to carry that proof without storing sessions on the server.

Anatomy of a JWT

A JWT is three Base64 sections separated by dots:

  • Header: the signing algorithm
  • Payload: claims like user id and role
  • Signature: verifies the token was not tampered with

The payload is encoded, not encrypted — never put secrets in it.

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

Installing jsonwebtoken

The jsonwebtoken package handles creating and verifying tokens.

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

Signing a Token on Login

After verifying a user's credentials, call jwt.sign() with the payload, a secret, and options like expiry. Send the resulting token back to the client.

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

Sending the Token

The client stores the token and sends it back on each request, usually in the Authorization header using the Bearer scheme.

// Authorization: Bearer eyJhbGci...

Reading the Token in Middleware

Auth middleware extracts the token from the header. Split off the Bearer prefix to get the raw token string.

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

Verifying the Token

jwt.verify() checks the signature and expiry. If valid it returns the decoded payload; if not it throws, so wrap it in 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' });
}

Complete Auth Middleware

Putting it together, this middleware rejects missing or invalid tokens and attaches the user to the request for downstream handlers.

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' });
  }
}

Protecting Routes

Apply the middleware to any route that requires login. Express runs it before the handler, blocking unauthenticated requests automatically.

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

Role-Based Authorization

Authentication answers "who are you?"; authorization answers "are you allowed?". A second middleware can check req.user.role set by the auth step.

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);

Security Best Practices

Keep tokens safe:

  • Store the secret in an environment variable, never in code
  • Use short expiry times and refresh tokens for longer sessions
  • Always serve over HTTPS
  • Return 401 for missing/invalid auth, 403 for insufficient permissions

Quick Check

Test your understanding of JWT auth.

Recap

You built stateless authentication with JWT:

  • Sign a token on login with jwt.sign()
  • Send it via the Authorization: Bearer header
  • Verify it in custom middleware with jwt.verify()
  • Attach req.user and protect routes
  • Add role checks for authorization

This is the foundation of secure Express APIs.

Часто задаваемые вопросы

Урок «Промежуточное ПО аутентификации с JWT» бесплатный?

Да — полный текст урока «Промежуточное ПО аутентификации с JWT» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Node.js Backend Development Bootcamp, подпишись на CoddyKit PRO. Курс Node.js Backend Development Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Промежуточное ПО аутентификации с JWT»?

Добавьте безопасную аутентификацию в приложение Express с помощью веб-токенов JSON и научитесь защищать маршруты с помощью собственного промежуточного ПО аутентификации. Ты практикуешь Node.js Backend Development Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Node.js Backend Development Bootcamp?

Предыдущий опыт не требуется. Node.js Backend Development Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Промежуточное ПО аутентификации с JWT»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Node.js Backend Development Bootcamp?

Да. Каждый урок Node.js Backend Development Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Разработка пользовательского промежуточного ПО Express
  2. Стратегии глобальной обработки ошибок
  3. Проверка входных данных с Joi/Express-Validator
  4. Промежуточное ПО аутентификации с JWT
← Назад к Node.js Backend Development Bootcamp