在远程环回之前

时间:2018-01-15 13:22:14

标签: loopbackjs strongloop

我试图在调用远程方法之前使用环回远程钩子来检查用户令牌,但问题是我只能返回一个javascript错误,就像这些一样。

    "error": {
        "statusCode": 401,
        "name": "Error",
        "message": ""
    }

这是我在遥控器之前使用的代码。

Model.beforeRemote('method', function (context, unused, next) {

let token = Model.app.models.Token;
let id = context.args.Id;

let date = moment();
Rx.Observable.fromPromise(token.find({
    where: {
        and: [
            { id: id, },
            { expiration: { gt: date } }
        ]
    }
})).subscribe((token => {
    if (token.length > 0) {
        next();
    } else {
        let err = new Error();
        err.status = 401;
        delete err.stack;
        return next()
    }
}))
});

我需要一个"定制"不是错误的回应,就像这样。

    {
      "success": false,
      "data": {
        "service": "self",
        "operation": "rest",
        "code": "unauthorized"
      },
      "message": "Invalid token"
    }

我尝试使用After Remote钩子,我可以更改响应以获得类似的内容,但我希望在令牌无效的情况下获得更快的响应。

有没有办法用before钩子实现这个目的?或者我必须在勾手后使用?

由于

1 个答案:

答案 0 :(得分:0)

您可能希望将错误传递给下一个函数:

return next(err)