Назад к вопросам
Junior — Middle
86
Предоставлял ли ты решение по реализации системы аутентификации и авторизации в приложениях на Node.js?
Ответ от нейросети
sobes.tech AI
Да, для реализации системы аутентификации и авторизации в Node.js часто используют следующие подходы:
-
Аутентификация с помощью JWT (JSON Web Tokens): пользователь вводит логин и пароль, сервер проверяет их, и при успешной аутентификации выдает токен, который клиент передает в заголовках для доступа к защищенным ресурсам.
-
Использование middleware, например, Passport.js, который поддерживает множество стратегий аутентификации (локальная, OAuth, JWT и др.).
-
Авторизация реализуется через проверку ролей или прав пользователя, которые хранятся в базе или в токене.
Пример простейшей аутентификации с JWT:
const express = require('express');
const jwt = require('jsonwebtoken');
const app = express();
app.use(express.json());
const users = [{ id: 1, username: 'user', password: 'pass', role: 'admin' }];
app.post('/login', (req, res) => {
const { username, password } = req.body;
const user = users.find(u => u.username === username && u.password === password);
if (!user) return res.status(401).send('Invalid credentials');
const token = jwt.sign({ id: user.id, role: user.role }, 'secretKey', { expiresIn: '1h' });
res.json({ token });
});
function authMiddleware(req, res, next) {
const authHeader = req.headers.authorization;
if (!authHeader) return res.status(401).send('No token');
const token = authHeader.split(' ')[1];
jwt.verify(token, 'secretKey', (err, user) => {
if (err) return res.status(403).send('Invalid token');
req.user = user;
next();
});
}
app.get('/protected', authMiddleware, (req, res) => {
if (req.user.role !== 'admin') return res.status(403).send('Forbidden');
res.send('Protected data');
});
app.listen(3000);
Такой подход обеспечивает базовую защиту и разграничение доступа в приложениях на Node.js.