Sobes.tech
Назад к вопросам
Junior — Middle
89

Опиши подход к реализации системы аутентификации и разграничения доступа для трёх уровней пользователей: обычных пользователей, менеджеров и администраторов.

Ответ от нейросети

sobes.tech AI

Для реализации системы аутентификации и разграничения доступа с тремя уровнями пользователей (обычные пользователи, менеджеры, администраторы) можно использовать следующий подход:

  1. Аутентификация:

    • Использовать JWT (JSON Web Tokens) или сессии для подтверждения личности пользователя.
    • При логине проверять учетные данные и выдавать токен с информацией о роли пользователя.
  2. Разграничение доступа (авторизация):

    • В токене или сессии хранить роль пользователя.
    • На уровне middleware проверять роль и разрешать или запрещать доступ к определённым маршрутам или операциям.
  3. Пример структуры ролей:

    • user — базовые права, доступ к личному кабинету и основным функциям.
    • manager — расширенные права, например, управление группой пользователей или просмотр отчетов.
    • admin — полный доступ, включая управление системой и настройками.

Пример middleware на Node.js с использованием Express и JWT:

const jwt = require('jsonwebtoken');

function authorize(allowedRoles) {
  return (req, res, next) => {
    const token = req.headers.authorization?.split(' ')[1];
    if (!token) return res.status(401).send('Unauthorized');

    try {
      const payload = jwt.verify(token, 'your_secret_key');
      if (!allowedRoles.includes(payload.role)) {
        return res.status(403).send('Forbidden');
      }
      req.user = payload;
      next();
    } catch (e) {
      return res.status(401).send('Invalid token');
    }
  };
}

// Использование:
// app.get('/admin', authorize(['admin']), (req, res) => { ... });

Таким образом, система будет контролировать доступ на основе ролей, обеспечивая безопасность и удобство.