koa アプリ用の認証ルーターの作成に行き詰まっています。
DB からデータを取得し、それをリクエストと比較するモジュールがあります。yield next
認証が通った場合にのみ実行したい。
問題は、DB と通信するモジュールが promise を返し、yield next
その promise 内で実行しようとするとエラーが発生することです。または、厳密モードが使用されているかどうかによって異なりますSyntaxError: Unexpected strict mode reserved word
。SyntaxError: Unexpected identifier
簡単な例を次に示します。
var authenticate = require('authenticate-signature');
// authRouter is an instance of koa-router
authRouter.get('*', function *(next) {
var auth = authenticate(this.req);
auth.then(function() {
yield next;
}, function() {
throw new Error('Authentication failed');
})
});