C | Как избежать повторяющегося чтения файла конфигурации в DLL

#c #dll

#c #dll

Вопрос:

Я создал DLL-файл, который обрабатывает множество запросов API (в настоящее время около 20-30 в секунду) из разных приложений. Для доступа к API вы должны быть внесены в белый список. В прошлом это делалось через белый список IPv4 / v6, что является плохим подходом для систем с динамическим / меняющимся IP.

Я решил использовать токеновый подход, пользователь должен был бы ввести токен в конфигурационный файл. Однако постоянное «простое» чтение файла конфигурации (с использованием config4cpp) для каждого запроса является узким местом.

У меня вроде как закончились идеи, как решить эту проблему. Существуют ли более эффективные подходы? Возможно ли сохранить токен в памяти до следующего запроса?

Благодарен за любой совет 🙂

Комментарии:

1. Насколько безопасным это должно быть? Вы могли бы сохранить unordered_map<ip, timestamp> , чтобы отслеживать, когда клиент «вошел в систему». Запрашивайте у клиента учетные данные, только если их нет в map или временная метка слишком старая.

2. Это не обязательно должно быть слишком безопасным. Я только хочу иметь возможность сопоставлять каждый запрос с (ответственным) пользователем / сервером. В настоящее время я думаю о создании некоторого простого хэша на основе аппаратного обеспечения вызывающего приложения. Нужно только найти очень простой, производительный метод хеширования и протестировать его.

3. Вы могли бы сделать это или просто позволить клиенту аутентифицировать себя один раз и сохранять эту аутентификацию действительной в течение определенного периода времени, используя хэш, основанный unordered_map на том, что я предложил. Возможно, вы могли бы вместо этого ввести туда mac-адрес: unordered_map<mac, timestamp>