पाठ 16 / 30

JWT के साथ Authentication

Fastify में token-based authentication implement करें।

Fastify में JWT flow

  1. Client /login पर credentials भेजता है। 2) Server verify करके JWT जारी करता है। 3) Client Authorization: Bearer <token> में token शामिल करता है। 4) एक preHandler hook routes चलने से पहले token को verify करता है।

Login और token generation

एक login route बनाएँ जो JWT को sign और return करता है।

import jwt from '@fastify/jwt';

await fastify.register(jwt, { secret: process.env.JWT_SECRET });

fastify.post('/login', async (req) => {
  const { email, password } = req.body;
  // Verify credentials (your logic here)
  const user = await verifyUser(email, password);
  
  if (!user) {
    return reply.status(401).send({ error: 'Invalid credentials' });
  }
  
  const token = fastify.jwt.sign({ sub: user.id, email: user.email });
  return { token };
});

Routes की सुरक्षा

Route execution से पहले tokens को verify करने के लिए preHandler उपयोग करें।

async function authenticate(request, reply) {
  try {
    await request.jwtVerify();
  } catch (err) {
    reply.status(401).send({ error: 'Unauthorized' });
  }
}

fastify.get('/me', { preHandler: [authenticate] }, async (req) => {
  return { userId: req.user.sub, email: req.user.email };
});