我一直在为 koa 应用程序编写身份验证路由器。
我有一个从数据库获取数据然后将其与请求进行比较的模块。我只想yield next
在身份验证通过时运行。
问题是与数据库通信的模块返回一个承诺,如果我尝试yield next
在该承诺内运行,我会收到错误。要么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');
})
});