hapi-auth-basic
Lead Maintainer: Matt Harrison
Basic authentication requires validating a username and password combination. The 'basic'
scheme takes the following options:
validate
- (required) a user lookup and password validation function with the signature[async] function(request, username, password, h)
where:request
- is the hapi request object of the request which is being authenticated.username
- the username received from the client.password
- the password received from the client.h
- the response toolkit.- Returns an object
{ isValid, credentials, response }
where:isValid
-true
if both the username was found and the password matched, otherwisefalse
.credentials
- a credentials object passed back to the application inrequest.auth.credentials
.response
- Optional. If provided will be used immediately as a takeover response. Can be used to redirect the client, for example. Don't need to provideisValid
orcredentials
ifresponse
is provided
- Throwing an error from this function will replace default
Boom.unauthorized
error - Typically,
credentials
are only included whenisValid
istrue
, but there are cases when the application needs to know who tried to authenticate even when it fails (e.g. with authentication mode'try'
).
allowEmptyUsername
- (optional) iftrue
, allows making requests with an empty username. Defaults tofalse
.unauthorizedAttributes
- (optional) if set, passed directly to Boom.unauthorized if no customerr
is thrown. Useful for setting realm attribute in WWW-Authenticate header. Defaults toundefined
.
const Bcrypt = ;const Hapi = ; const users = john: username: 'john' password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm' // 'secret' name: 'John Doe' id: '2133d32a' ; const validate = async { if username === 'help' return response: h ; // custom response const user = usersusername; if !user return credentials: null isValid: false ; const isValid = await Bcrypt; const credentials = id: userid name: username ; return isValid credentials ;}; const main = async { const server = Hapi; await server; serverauth; serverauth; server; await serverstart; return server;}; ;