diff --git a/src/ESPAsyncWebServer.h b/src/ESPAsyncWebServer.h index b37cf98..eb28473 100644 --- a/src/ESPAsyncWebServer.h +++ b/src/ESPAsyncWebServer.h @@ -717,7 +717,8 @@ class AsyncWebRewrite { class AsyncWebHandler : public AsyncMiddlewareChain { protected: - ArRequestFilterFunction _filter{nullptr}; + ArRequestFilterFunction _filter = nullptr; + AuthenticationMiddleware* _authMiddleware = nullptr; public: AsyncWebHandler() {} diff --git a/src/WebHandlers.cpp b/src/WebHandlers.cpp index ef976e5..7c3a7dc 100644 --- a/src/WebHandlers.cpp +++ b/src/WebHandlers.cpp @@ -28,13 +28,13 @@ AsyncWebHandler& AsyncWebHandler::setFilter(ArRequestFilterFunction fn) { return *this; } AsyncWebHandler& AsyncWebHandler::setAuthentication(const char* username, const char* password) { - if (username == nullptr || password == nullptr || strlen(username) == 0 || strlen(password) == 0) - return *this; - AuthenticationMiddleware* m = new AuthenticationMiddleware(); - m->setUsername(username); - m->setPassword(password); - m->_freeOnRemoval = true; - addMiddleware(m); + if (!_authMiddleware) { + _authMiddleware = new AuthenticationMiddleware(); + _authMiddleware->_freeOnRemoval = true; + addMiddleware(_authMiddleware); + } + _authMiddleware->setUsername(username); + _authMiddleware->setPassword(password); return *this; };