RBAC в Go. Реализация проверки ролей.

Ответ

RBAC - доступ по ролям и разрешениям (роль имеет набор прав). В Go: middleware извлекает пользователя из контекста (после auth), проверяет роль/право для ресурса; при отсутствии права возвращает 403. Хранение: таблица ролей, связь пользователь-роли, роль-разрешения; или кеш в памяти. Проверка: hasRole(user, "admin") или hasPermission(user, "order:write").

func requireRole(role string) func(http.Handler) http.Handler {
    return func(next http.Handler) http.Handler {
        return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
            if getUser(r).Role != role { http.Error(w, "Forbidden", 403); return }
            next.ServeHTTP(w, r)
        })
    }
}
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.