BasicAuth

Basic Authentication middleware for Fiber that provides an HTTP basic authentication. It calls the next handler for valid credentials and 401 Unauthorized or a custom response for missing or invalid credentials.

Signatures

  1. func New(config Config) fiber.Handler

Examples

Import the middleware package that is part of the Fiber web framework

  1. import (
  2. "github.com/gofiber/fiber/v2"
  3. "github.com/gofiber/fiber/v2/middleware/basicauth"
  4. )

After you initiate your Fiber app, you can use the following possibilities:

  1. // Provide a minimal config
  2. app.Use(basicauth.New(basicauth.Config{
  3. Users: map[string]string{
  4. "john": "doe",
  5. "admin": "123456",
  6. },
  7. }))
  8. // Or extend your config for customization
  9. app.Use(basicauth.New(basicauth.Config{
  10. Users: map[string]string{
  11. "john": "doe",
  12. "admin": "123456",
  13. },
  14. Realm: "Forbidden",
  15. Authorizer: func(user, pass string) bool {
  16. if user == "john" && pass == "doe" {
  17. return true
  18. }
  19. if user == "admin" && pass == "123456" {
  20. return true
  21. }
  22. return false
  23. },
  24. Unauthorized: func(c *fiber.Ctx) error {
  25. return c.SendFile("./unauthorized.html")
  26. },
  27. ContextUsername: "_user",
  28. ContextPassword: "_pass",
  29. }))

Config

  1. // Config defines the config for middleware.
  2. type Config struct {
  3. // Next defines a function to skip this middleware when returned true.
  4. //
  5. // Optional. Default: nil
  6. Next func(c *fiber.Ctx) bool
  7. // Users defines the allowed credentials
  8. //
  9. // Required. Default: map[string]string{}
  10. Users map[string]string
  11. // Realm is a string to define realm attribute of BasicAuth.
  12. // the realm identifies the system to authenticate against
  13. // and can be used by clients to save credentials
  14. //
  15. // Optional. Default: "Restricted".
  16. Realm string
  17. // Authorizer defines a function you can pass
  18. // to check the credentials however you want.
  19. // It will be called with a username and password
  20. // and is expected to return true or false to indicate
  21. // that the credentials were approved or not.
  22. //
  23. // Optional. Default: nil.
  24. Authorizer func(string, string) bool
  25. // Unauthorized defines the response body for unauthorized responses.
  26. // By default it will return with a 401 Unauthorized and the correct WWW-Auth header
  27. //
  28. // Optional. Default: nil
  29. Unauthorized fiber.Handler
  30. // ContextUser is the key to store the username in Locals
  31. //
  32. // Optional. Default: "username"
  33. ContextUsername string
  34. // ContextPass is the key to store the password in Locals
  35. //
  36. // Optional. Default: "password"
  37. ContextPassword string
  38. }

Default Config

  1. var ConfigDefault = Config{
  2. Next: nil,
  3. Users: map[string]string{},
  4. Realm: "Restricted",
  5. Authorizer: nil,
  6. Unauthorized: nil,
  7. ContextUsername: "username",
  8. ContextPassword: "password",
  9. }