Basic Auth Using the Axios HTTP Client
May 4, 2019
Basic auth is a common way to handle logging in with username and password via HTTP. If you're using Axios as your HTTP client, you get basic auth for free.
HTTPBin offers a free sample endpoint to test basic auth. The endpoint URL includes the correct username and password for test purposes. For example, the URL https://httpbin.org/basic-auth/foo/bar
succeeds if you send it properly formatted basic auth for username 'foo' and password 'bar', and fails if you don't.
If you pass the auth
option to axios.get()
, axios will properly format basic auth for you as shown below.
const res = await axios.get('https://httpbin.org/basic-auth/foo/bar', {
// Axios looks for the `auth` option, and, if it is set, formats a
// basic auth header for you automatically.
auth: {
username: 'foo',
password: 'bar'
}
});
res.status; // 200
If login failed, HTTPBin will respond with an HTTP 401, which Axios bubbles up as a promise rejection.
const err = await axios.
get('https://httpbin.org/basic-auth/foo/bar', {
auth: {
username: 'foo',
password: 'baz' // Bad password
}
}).
catch(err => err);
err.message; // "Request failed with status code 401"
err.response.status; // 401 "Unauthorized"
Did you find this tutorial useful? Say thanks by starring our repo on GitHub!