Сложность реализации JWT-аутентификации в бэкэнде Node.js

Discussion in 'Javascript' started by Vishal Singh, 21 Aug 2023.

  1. Vishal Singh

    Vishal Singh New Member

    Joined:
    8 Aug 2023
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    В настоящее время я работаю над серверной частью Node.js для веб-приложения и сталкиваюсь с проблемами при попытке реализовать аутентификацию JWT (JSON Web Token). Я следил за различными учебными пособиями и документацией, подобными этому, но все еще сталкиваюсь с проблемами с потоком аутентификации. Я использую Express.js для маршрутизации API и MongoDB для хранения данных.

    Вот упрощенная версия моего кода аутентификации:

    Code:
    // auth.js
    
    const jwt = require('jsonwebtoken');
    const secretKey = 'mysecretkey';
    
    // ... (other imports and middleware setup)
    
    router.post('/login', async (req, res) => {
      const { email, password } = req.body;
    
      // Check if email and password are valid
      // If valid, generate a JWT token
      const user = await User.findOne({ email });
    
      if (!user || user.password !== password) {
        return res.status(401).json({ message: 'Invalid credentials' });
      }
    
      const token = jwt.sign({ userId: user._id }, secretKey);
    
      return res.json({ token });
    });
    
    // ... (other routes and middleware)
    
    Несмотря на успешное создание токена JWT, когда я пытаюсь использовать этот токен для доступа к защищенным маршрутам, я все еще получаю несанкционированные ответы. Я обязательно включил токен в заголовок запроса, но, похоже, чего-то не хватает.

    Может ли кто-нибудь указать мне, что я могу упустить из виду в этой реализации? Есть ли распространенная ошибка при настройке аутентификации JWT в бэкэнде Node.js с помощью Express? Любые советы или идеи будут с благодарностью. Заранее спасибо!
     
  2. bz_k

    bz_k New Member

    Joined:
    24 Aug 2024
    Messages:
    3
    Likes Received:
    1
    Reputations:
    0
    нужно добавить "Content-Type": "application/json" в headers