horse-basic-auth is an official middleware for working with basic authentication in APIs developed with the Horse framework.
We created a channel on Telegram for questions and support:
⚙️ Installation
Installation is done using the boss install command:
boss install horse-basic-auth
If you choose to install manually, simply add the following folders to your project, in Project > Options > Resource Compiler > Directories and Conditionals > Include file search path
✔️ Compatibility
This middleware is compatible with projects developed in:
- Delphi
- Lazarus
⚡️ Quickstart Delphi
uses Horse, Horse.BasicAuthentication, // It's necessary to use the unit System.SysUtils; begin // It's necessary to add the middleware in the Horse: THorse.Use(HorseBasicAuthentication( function(const AUsername, APassword: string): Boolean begin // Here inside you can access your database and validate if username and password are valid Result := AUsername.Equals('user') and APassword.Equals('password'); end)); // The default header for receiving credentials is "Authorization". // You can change, if necessary: // THorse.Use(HorseBasicAuthentication(MyCallbackValidation, THorseBasicAuthenticationConfig.New.Header('X-My-Header-Authorization'))); // You can also ignore routes: // THorse.Use(HorseBasicAuthentication(MyCallbackValidation, THorseBasicAuthenticationConfig.New.SkipRoutes(['/ping']))); THorse.Get('/ping', procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc) begin Res.Send('pong'); end); THorse.Listen(9000); end;
⚡️ Quickstart Lazarus
{$MODE DELPHI}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Horse, Horse.BasicAuthentication, // It's necessary to use the unit SysUtils; procedure GetPing(Req: THorseRequest; Res: THorseResponse; Next: TNextProc); begin Res.Send('Pong'); end; function DoLogin(const AUsername, APassword: string): Boolean; begin // Here inside you can access your database and validate if username and password are valid Result := AUsername.Equals('user') and APassword.Equals('password'); end; begin // It's necessary to add the middleware in the Horse: THorse.Use(HorseBasicAuthentication(DoLogin)); // The default header for receiving credentials is "Authorization". // You can change, if necessary: // THorse.Use(HorseBasicAuthentication(MyCallbackValidation, THorseBasicAuthenticationConfig.New.Header('X-My-Header-Authorization'))); // You can also ignore routes: // THorse.Use(HorseBasicAuthentication(MyCallbackValidation, THorseBasicAuthenticationConfig.New.SkipRoutes(['/ping']))); THorse.Get('/ping', GetPing); THorse.Listen(9000); end.
📌 Status Code
This middleware can return the following status code:
⚠️ License
horse-basic-auth is free and open-source middleware licensed under the MIT License.