पाठ 16 / 30
JWT के साथ Authentication
Fastify में token-based authentication implement करें।
Fastify में JWT flow
- Client
/loginपर credentials भेजता है। 2) Server verify करके JWT जारी करता है। 3) ClientAuthorization: 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 };
});