feathersjs - Feathersjs:一旦我在之前的函数中将它与另一个链接起来,我的钩子就会失败(失去上下文)
问题描述
我在前钩子(get)中有2个函数(authenticate,restrictAccess),我想将它们链接在一起。但是restrictAccess被执行了两次(到第二轮它已经丢失了上下文)当我删除authenticate时,restrictAccess按预期工作。
这是我的钩子
module.exports = {
before: {
all: [],
get: [authenticate('jwt'), restrictAccess()],
....
但是当我删除身份验证时
module.exports = {
before: {
all: [],
get: [ restrictAccess()],
....
限制访问按预期工作
解决方案
我能想到的唯一原因是您可能使用了用户服务上的挂钩。
如果是这种情况,authenticate-hook 可能会在内部调用用户服务以将 params.user 设置为请求用户,这将导致对 restrictAccess-hook 的两次调用。
一个可能的解决方法是忽略您的 restrictAccess-hook 中的所有内部调用:
module.exports = context => {
if (context.params && context.params.provider) {
// put restriction logik here....
}
return context;
}
推荐阅读
- r - 为回归创建基线变量
- python - 加载到终端和 Pycharm 中的不同环境变量
- javascript - 如何在前端仅使用 javascript 将图像、文档、音频或视频转换为其他文件格式?
- python - 根据用户输入的列和行填充随机数的数据框
- firebase - 使用 Firebase Hosting + Cloud Run Express 服务器时在哪里设置 Cache-Control?
- c# - ASP.Net Core Error CS1061是什么问题
- python - 如何将 matplotlib 图表迁移到 hvplot?
- xcode - 如何为多种 iPhone 尺寸对齐文本和图像
- azure-data-explorer - Kusto 流式摄取:ErrorReason=Not Found
- c# - 如何使用 EntityFramework 设置 FORCEPLAN?