Веб-токены JSON (JWT) стали популярным выбором для аутентификации и авторизации в веб-приложениях. В Node.js доступно несколько отличных пакетов npm, которые упрощают работу с JWT. В этой статье мы рассмотрим некоторые из лучших пакетов npm для JWT и предоставим примеры кода, которые помогут вам понять их использование. Итак, давайте углубимся и освоим JWT в Node.js!
- jsonwebtoken:
Пакет «jsonwebtoken» — это широко используемый пакет npm для работы с JWT. Он предоставляет простой и понятный API для создания, подписания и проверки токенов. Вот пример его использования:
const jwt = require('jsonwebtoken');
// Create a token
const token = jwt.sign({ userId: '123' }, 'secretKey');
// Verify a token
try {
const decoded = jwt.verify(token, 'secretKey');
console.log(decoded); // { userId: '123', iat: 1612345678 }
} catch (error) {
console.error('Invalid token');
}
- express-jwt:
Если вы используете Express.js для своего приложения Node.js, пакет «express-jwt» предоставляет промежуточное программное обеспечение, которое упрощает аутентификацию JWT. Вот пример:
const express = require('express');
const jwt = require('express-jwt');
const app = express();
// Set up JWT middleware
app.use(jwt({ secret: 'secretKey' }));
// Protected route
app.get('/api/user', (req, res) => {
// Access user information from req.user
const user = req.user;
res.json(user);
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});
- passport-jwt:
“passport-jwt” — еще один популярный пакет npm, который интегрирует аутентификацию на основе JWT с библиотекой аутентификации Passport. Он обеспечивает стратегию аутентификации запросов с использованием JWT. Вот пример:
const passport = require('passport');
const passportJWT = require('passport-jwt');
const JwtStrategy = passportJWT.Strategy;
const strategy = new JwtStrategy(
{ secretOrKey: 'secretKey', jwtFromRequest: passportJWT.ExtractJwt.fromAuthHeaderAsBearerToken() },
(payload, done) => {
// Find the user based on the payload
const user = User.findById(payload.userId);
if (user) {
done(null, user);
} else {
done(null, false);
}
}
);
passport.use(strategy);
// Protect a route using passport.authenticate
app.get('/api/user', passport.authenticate('jwt', { session: false }), (req, res) => {
const user = req.user;
res.json(user);
});
В этой статье мы рассмотрели три популярных пакета npm для работы с JWT в Node.js. Пакет «jsonwebtoken» предоставляет простой API для создания и проверки токенов. Если вы используете Express.js, «express-jwt» упрощает аутентификацию JWT с помощью своего промежуточного программного обеспечения. Для более сложных сценариев «passport-jwt» интегрирует аутентификацию на основе JWT с библиотекой Passport. Используя эти пакеты npm, вы можете легко реализовать безопасную аутентификацию и авторизацию в своих приложениях Node.js.