JWT Authentication (JWT Auth)
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;
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.