Performance: JWT token generation and verification
This concept affects server response time and client-side processing speed during authentication.
import jwt from 'jsonwebtoken'; async function generateToken(user) { return new Promise((resolve, reject) => { jwt.sign(user, 'secretKey', { expiresIn: '1h' }, (err, token) => { if (err) reject(err); else resolve(token); }); }); } async function verifyToken(token) { return new Promise((resolve, reject) => { jwt.verify(token, 'secretKey', (err, decoded) => { if (err) reject(err); else resolve(decoded); }); }); }
const jwt = require('jsonwebtoken'); function generateToken(user) { // Using synchronous sign method return jwt.sign(user, 'secretKey', { expiresIn: '1h' }); } function verifyToken(token) { // Using synchronous verify method try { return jwt.verify(token, 'secretKey'); } catch (e) { return null; } }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Synchronous JWT sign/verify | 0 (server-side) | 0 | 0 | [X] Bad |
| Asynchronous JWT sign/verify | 0 (server-side) | 0 | 0 | [OK] Good |
const jwt = require('jsonwebtoken');
const token = jwt.sign({ userId: 123 }, 'secret123', { expiresIn: '2h' });
const decoded = jwt.verify(token, 'secret123');
console.log(decoded.userId);const jwt = require('jsonwebtoken');
const token = jwt.sign({ id: 1 }, 'mysecret');
const decoded = jwt.verify(token, 'wrongsecret');
console.log(decoded.id);Pass the test and this pattern moves unknown