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
//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}`);
});
© www.thecoderjob.com. All Rights Reserved. Designed by HTML Codex