Перейти к содержанию
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
Логотип бренда
Категории
  1. Главная
  2. Категории
  3. Бекенд, разработка серверов
  4. Fastify
  5. Fastify - No Authorization was found in request.headers

Fastify - No Authorization was found in request.headers

Запланировано Прикреплена Закрыта Перенесена Fastify
2 Сообщения 1 Постеры 42 Просмотры 1 Watching
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • kirilljsK Не в сети
    kirilljsK Не в сети
    kirilljs
    js
    написал в отредактировано
    #1

    Кароче, попробовал я этот ваш Fastify, бля ну все шло гладко, уже там и репозитории и логику в сервисах прикрути.

    Дело дошло до регистрации и авторизации пользователей. И тут начались проблемы, эта дура по непонятным мне приничал нихуя не регистрирует заголовок Authentication.
    Кстати в fastify.d.ts я тоже все четко прописал по инструкции:

    import 'fastify';
    
    declare module 'fastify' {
    interface FastifyInstance {
        authenticate: (request: FastifyRequest, reply: FastifyReply) => Promise<void>;
      }
    }
    

    Так вот эта сука, отдает токен можно посмотреть в fastifyInstance.post('/token'...
    Казалось бы заебись, но по непонятным мне причинам не записывает нихуя в заголовок Authentication, я уже и так и сяк, но не пойму почему.

    Вынес пока все дерьмище в index.ts, может подскажет кто нибудь в чем может быть причина ? Молю 😥

    import fastifyInstance from "./infrastructure/server/fastify";
    import { registerRoutes } from "./app/app-module";
    import { dataSourceInit } from "./infrastructure/lib/db/postgresql/connect-typeorm";
    import fastifyFormbody from "@fastify/formbody";
    import fastifyJwt from "@fastify/jwt";
    import fp from 'fastify-plugin';
    
    (async () => {
      try {
        
        fastifyInstance.register(fastifyFormbody);
        
        const authenticate = fp(async function (instance, opts) {
          instance.register(fastifyJwt, {
            secret: 'super-strong-secret',
            sign: { expiresIn: '7d' }
          });
          
          instance.decorate('authenticate', async function (request, reply) {
            try {
              console.log('Authorization header:', request.headers.authorization);
              await request.jwtVerify();
              console.log('User verified:', request.user);
            } catch (err) {
              console.log('Authentication error:', err);
              reply.send(err);
            }
          });
        });
        
        fastifyInstance.register(authenticate);
        
        fastifyInstance.post('/token', async (request, reply) => {
          const user = "user=exampleUser"
          if (!user) {
            reply.code(400).send({ error: 'User is required' });
          }
          const token = fastifyInstance.jwt.sign({ user });
          return { token };
        });
        
        fastifyInstance.get('/', { onRequest: fastifyInstance.authenticate }, async function (request, reply) {
          console.log(request.user);
          
          return request.user;
        });
        
        fastifyInstance.get("/protected", { onRequest: fastifyInstance.authenticate }, async (request, reply) => {
          try {
            return { message: "You are authenticated!", user: request.user };
          } catch (err) {
            return { message: "хуй за щеку" };
          }
        });
        
        fastifyInstance.register(registerRoutes);
        
        await fastifyInstance.listen({ port: 3009 });
        fastifyInstance.ready((err) => {
          dataSourceInit();
          if (err) {
            fastifyInstance.log.error(err);
            process.exit(1);
          } else {
            const address = fastifyInstance.server.address();
            if (typeof address === "string") {
              console.log(`Fastify прослушивание сокета ${address}`);
            } else {
              console.log(`Fastify прослушивание http://localhost:${address.port}`);
            }
          }
        });
      } catch (err) {
        fastifyInstance.log.error(err);
        process.exit(1);
      }
    })();
    
    1 ответ Последний ответ
    0
    • kirilljsK Не в сети
      kirilljsK Не в сети
      kirilljs
      js
      написал в отредактировано
      #2

      Кароче решил проблему, все регистрировалось корректно - это я про регистрацию плагина и прочее.

      Вообщем, я забывал передавать в заголовке сам токен когда проверял защищенные роуты

      Снимок экрана 2024-11-09 в 23.34.18.png

      Проблема решена!)

      1 ответ Последний ответ
      0

      • Войти

      • Нет учётной записи? Зарегистрироваться

      • Войдите или зарегистрируйтесь для поиска.
      • Первое сообщение
        Последнее сообщение
      0
      • Категории
      • Последние
      • Метки
      • Популярные
      • Пользователи
      • Группы