دوره‌ها / Node.js / JWT Authentication (JWT Auth)

JWT Authentication (JWT Auth)

15 دقیقه Article

JWT Authentication: احراز هویت با JWT 🔐

JWT (JSON Web Token) برای authentication و authorization استفاده میشه!

نصب:

// نصب
// npm install jsonwebtoken

const jwt = require('jsonwebtoken');
const secret = 'your-secret-key';

ساخت Token:

// Login route
app.post('/login', async (req, res) => {
    const { email, password } = req.body;
    
    // Verify user
    const user = await User.findOne({ email });
    if (!user || !await bcrypt.compare(password, user.password)) {
        return res.status(401).json({ error: 'Invalid credentials' });
    }
    
    // ساخت token
    const token = jwt.sign(
        { userId: user.id, email: user.email },
        secret,
        { expiresIn: '24h' }
    );
    
    res.json({ token });
});

Verify Token:

// Middleware برای verify کردن token
const authenticateToken = (req, res, next) => {
    const authHeader = req.headers['authorization'];
    const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
    
    if (!token) {
        return res.status(401).json({ error: 'No token provided' });
    }
    
    jwt.verify(token, secret, (err, user) => {
        if (err) {
            return res.status(403).json({ error: 'Invalid token' });
        }
        req.user = user;
        next();
    });
};

// استفاده
app.get('/profile', authenticateToken, (req, res) => {
    res.json({ user: req.user });
});
✅ یاد گرفتید: JWT برای stateless authentication عالیه!

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تمرین: JWT Authentication Hard
سوال تمرین

🎯 تمرین: ساخت JWT Middleware

یک middleware برای بررسی JWT token بسازید.

پاسخ تمرین
JAVASCRIPT
const jwt = require('jsonwebtoken');

function authenticateToken(req, res, next) {
    const authHeader = req.headers['authorization'];
    const token = authHeader && authHeader.split(' ')[1];
    
    if (!token) {
        return res.status(401).json({ error: 'Access token required' });
    }
    
    jwt.verify(token, process.env.JWT_SECRET, (err, user) => {
        if (err) {
            return res.status(403).json({ error: 'Invalid token' });
        }
        req.user = user;
        next();
    });
}

module.exports = authenticateToken;

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.