The module provides two middlewares - one for granting tokens and another to authorise them. koa-oauth-server and, consequently oauth2-server, expect the request body to be parsed already.
The following example uses koa-bodyparser but you may opt for an alternative library.
varkoa=require('koa');varbodyparser=require('koa-bodyparser');varoauthserver=require('koa-oauth-server');varapp=koa();app.oauth=oauthserver({model: {},// See https://github.com/thomseddon/node-oauth2-server for specificationgrants: ['password'],debug: true});app.use(bodyparser());app.use(app.oauth.authorise());app.use(function*(next){this.body='Secret area';yieldnext;});app.listen(3000);
Using koa-router with koa-mount
If you wish to integrate with koa-router using koa-mount, you may do so by combining them to mount a specific prefix for oauth operations:
varRouter=require('koa-router');varbodyparser=require('koa-bodyparser');varkoa=require('koa');varmodel=require('koa-oauth-server/node_modules/oauth2-server/examples/memory/model');varmount=require('koa-mount');varoauthserver=require('koa-oauth-server');// Create a new koa app.varapp=koa();// Create a router for oauth.varrouter=newRouter();// Enable body parsing.app.use(bodyparser());// See https://github.com/thomseddon/node-oauth2-server for specification.app.oauth=oauthserver({model: model,grants: ['password'],debug: true});// Mount `oauth2` route prefix.app.use(mount('/oauth2',router.middleware()));// Register `/token` POST path on oauth router (i.e. `/oauth2/token`).router.post('/token',app.oauth.grant());// Start koa server.app.listen(3000);
请发表评论