NA +91-8727899942 thecoderjob@gmail.com

CHAPTER - 19

How to apply JSON Web Tokens in node Js

JSON Web Tokens (JWT) are a popular way to authenticate and secure web applications.

In Node Js, you can use libraries like jsonwebtoken to implement JWT-based authentication.

Below are the steps to apply JSON Web Tokens in a Node.js application:

Step 1: Install Required Packages

Step 2: Create JWT Functions

Step 3: Create Routes for Authentication

Step 4: Integrate Routes in Main App

Here's is the Code !!

//Step 1
npm install jsonwebtoken

//Step 2
const jwt = require('jsonwebtoken');

const secretKey = 'yourSecretKey'; // Replace with your secret key
const expiresIn = '1h'; // Token expiration time

// Generate a new JWT
const generateToken = (payload) => {
  return jwt.sign(payload, secretKey, { expiresIn });
};

// Verify and decode JWT
const verifyToken = (token) => {
  try {
    const decoded = jwt.verify(token, secretKey);
    return { valid: true, payload: decoded };
  } catch (error) {
    return { valid: false, error: error.message };
  }
};

module.exports = {
  generateToken,
  verifyToken,
};

//Step 3
const express = require('express');
const router = express.Router();
const jwtUtils = require('./jwtUtils');

// Mock user data (replace with your database)
const users = [
  { id: 1, username: 'user1', password: 'password1' },
  { id: 2, username: 'user2', password: 'password2' },
];

// Login route
router.post('/login', (req, res) => {
  const { username, password } = req.body;

  // Mock authentication (replace with your authentication logic)
  const user = users.find(u => u.username === username && u.password === password);

  if (user) {
    const token = jwtUtils.generateToken({ id: user.id, username: user.username });
    res.json({ token });
  } else {
    res.status(401).json({ message: 'Invalid credentials' });
  }
});

// Protected route
router.get('/protected', (req, res) => {
  const token = req.headers.authorization?.split(' ')[1];

  if (!token) {
    return res.status(401).json({ message: 'Token is required' });
  }

  const result = jwtUtils.verifyToken(token);

  if (result.valid) {
    res.json({ message: 'Protected resource', user: result.payload });
  } else {
    res.status(401).json({ message: 'Invalid token', error: result.error });
  }
});

module.exports = router;

//Step 4
const express = require('express');
const authRoutes = require('./authRoutes');

const app = express();

app.use(express.json());

// Routes
app.use('/auth', authRoutes);

const PORT = 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Chapter 18

How node Js connect to mongoose database?

Previous chapter

Chapter 20

How to apply Role based access control in node Js

Next chapter

Get In Touch

NA

thecoderjob@gmail.com

+91-8727899942

Popular Links

© www.thecoderjob.com. All Rights Reserved.               Designed by HTML Codex