Add centralized authentication handler (issue #102) #359
+622
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds a centralized authentication mechanism to libhttpserver that runs before any resource's render method is called. This addresses issue #102 where users had to copy authentication code into every
render_*method.Features:
auth_handler: A callback that receives thehttp_requestand can returnnullptrto allow the request or anhttp_responseto reject itauth_skip_paths: A vector of paths that bypass authentication (supports exact match and wildcard suffix like/public/*)Files changed:
src/httpserver/create_webserver.hpp- Addedauth_handler_ptrtypedef and builder methodssrc/httpserver/webserver.hpp- Added member variables and helper declarationsrc/webserver.cpp- Implemented auth check in request pipelinetest/integ/authentication.cpp- Added 10 new test casesexamples/centralized_authentication.cpp- New example fileREADME.md- Documentation for the new featureExample Usage
Test Plan
make check)Closes #102