Skip to content

yutak23/auth-bearer-parser

Repository files navigation

auth-bearer-parser test

This is a parsing middleware for Bearer tokens that can be used with the Express framework.
Parse the Authorization header and assign the Bearer token to req.token.

Installation

npm

$ npm install auth-bearer-parser

yarn

$ yarn add auth-bearer-parser

Usage

TypeScript

import express, { Request, Response } from 'express';
import authBearerParser from 'auth-bearer-parser';

const app = express();
app.use(authBearerParser());
//=> now you have access to req.token, which contains the Bearer token

app.get('/', (req: Request, res: Response) => {
	console.log(req.token);
	...
});
...

JavaScript

ES Module

import express from 'express';
import authBearerParser from 'auth-bearer-parser';

const app = express();
app.use(authBearerParser());
//=> now you have access to req.token, which contains the Bearer token

app.get('/', (req, res) => {
	console.log(req.token);
	...
});
...

CommonJS

Note that you should be require('...').default.

const express = require('express');
const authBearerParser = require('auth-bearer-parser').default;

const app = express();
app.use(authBearerParser());
//=> now you have access to req.token, which contains the Bearer token

app.get('/', (req, res) => {
	console.log(req.token);
	...
});
...

API

authBearerParser(options) -> void

options

Optional
Type: object

isThrowError

Optional
Type: boolean
Default: false

If true, throw error when bearer token is invalid.
The error objects thrown are as follows.

status message
401 authorization header missing
400 invalid token type: ${auth-scheme}
auth-scheme is Basic or Digest and so on
401 token missing

To catch errors thrown and continue processing, the default error handling of express can be changed to any error by extending it. An example is shown below.

import express from 'express';
import authBearerParser from 'auth-bearer-parser';

const app = express();
app.use(authBearerParser({ isThrowError: true })); // throw error when bearer token is invalid

// some kind of processing (API implementation by router, etc.)

// override express default error handlers (https://expressjs.com/en/guide/error-handling.html#writing-error-handlers)
app.use((err, req, res, next) => {
	// you can access property `status` and `message`
	res.status(err.status | 500).json({ message: err.message });
});

License

MIT licensed