Add simple "blanket" basic auth with username / password. If you require anything more specific just use the basic-auth module.
v4.x+ Breaking Change: This package no longer requires both a username and a password. Either or is supported, see #39 for more insight.
$npminstallkoa-basic-authPassword protect downstream middleware:
constauth=require('koa-basic-auth');constKoa=require('koa');constapp=newKoa();// custom 401 handlingapp.use(async(ctx,next)=>{try{awaitnext();}catch(err){if(401==err.status){ctx.status=401;ctx.set('WWW-Authenticate','Basic');ctx.body='cant haz that';}else{throwerr;}}});// require authapp.use(auth({name: 'tj',pass: 'tobi'}));// secret responseapp.use(async(ctx)=>{ctx.body='secret';});app.listen(3000,function(){console.log('listening on port 3000');});Example request:
$ curl -H "Authorization: basic dGo6dG9iaQ==" http://localhost:3000/ -i
HTTP/1.1 200 OK
X-Powered-By: koa
Content-Type: text/plain; charset=utf-8
Content-Length: 6
Date: Sat, 30 Nov 2013 19:35:17 GMT
Connection: keep-alive
secret
Using the mount middleware you may specify auth for a given prefix:
constmount=require('koa-mount');constauth=require('koa-basic-auth');app.use(mount('/admin',auth({name: 'tobi',pass: 'ferret'})));MIT
