TL; DR 假设客户端响应以其他方式管理,则不调用beforeRemote中next()的潜在问题/缺点是什么拒绝beforeRemote,我可以使用res.send还是必须使用next()?
嗨。
我有一个模型中的基础验证函数beforeRemote钩子,如果某些条件不符合,需要返回拒绝给客户端。
我在早期的路由拦截中使用res.send,它完美地工作,并且在beforeRemote中的res.send也似乎工作。但是我很担心文档非常清楚地说明必须调用“next”,这意味着我无法手动res.send。
我如何做到这一点在前面的路线
res.statusCode = 401;
return res.send("Access denied");
如何发挥它的安全
err = new Error("Access Denied");
err.status = 401;
delete err.stack;
return next(err);
我更喜欢第一种方法,因为我没有花“时间”抛出错误并在回拨之前删除堆栈跟踪(在其他地方需要,因此不能全局删除)。 res.send对我来说似乎更清洁,但这可能是一种误解? 最后,我不确定是否有任何长期缺陷没有结束远程“在环回上下文”((ctx。)res.send是“只是”表达)。
是。接下来传递“正确”的方式将允许一些额外的处理,res.send将在哪里结束链。但在这种情况下,这正是我想要的,这是一个基本的拒绝/要求,我没有想到除了拒绝客户之外,还有什么需要做任何事情。 –
所以问题的核心仍然是:在beforeRemote –
中调用next()的潜在问题/缺点是什么我想说你的情况没有,你只是结束请求/响应循环早。但是可能有一个缺点。既然你没有接下来的调用,我很肯定你不能使用[debug strings]正确调试你的服务器(https://docs.strongloop.com/display/public/LB/Setting+debug+strings )用于强大的远程处理。 – Overdrivr