FeatherJS-通过钩子获取用户信息?

时间:2019-01-09 10:46:18

标签: express feathersjs

因此,在试用FeatherJS时,我能够注册一个新用户,请求一个令牌以及请求受保护的数据(使用标头中的授权)。

非常重要:我仅使用HTTP Rest API。该文档似乎经常指向客户端羽毛模块,我不使用它。

所以目前我有一个超级简单的设置,我有一个带有文本的消息服务。一个钩子之前处理消息。在这里我想找回用户信息:

module.exports = function (options = {}) {
  return async context => {

    const text = context.data.text
    const user = context.params.user;

    context.data = {

      text,
      userId: user._id

    }
    return context;
  };
};

这不起作用。在我的mdb中,我只能返回:

{
    "_id": "5c35ce18523501803f6a8d8d",
    "text": "123",
    "createdAt": "2019-01-09T10:34:00.774Z",
    "updatedAt": "2019-01-09T10:34:00.774Z",
    "__v": 0
}

我试图添加令牌,当我通过授权发布消息时,我总是提交令牌,就像这样:

module.exports =函数(选项= {}){       返回异步上下文=> {

    const text = context.data.text
    const user = context.params.user;
    const token = context.params.accessToken


    context.data = {

      text,
      userId: user._id,
      tokId: token

    }
    return context;
  };
};

但是似乎我总是总是得到与上面所示相同的结果。

有什么想法我可以通过使用accessToken来获取当前用户的用户信息吗?

以前从未使用过FeathersJS,因此只是试图了解生态系统以及如何在FeathersJS中实现这一目标。

任何建议都值得赞赏!预先感谢大家!

3 个答案:

答案 0 :(得分:0)

不太确定到底出了什么问题,但是我现在通过创建一个新项目就可以正常工作了。

现在我确实之前确实重新创建了这个项目,并收到了上述问题,但是这次它以某种方式起作用了。

对于任何想知道我“修复”它的步骤的人:

1。创建一个新文件夹 2.羽毛生成应用 3.羽毛产生认证 4.羽毛生成服务(服务名称:消息) 5.羽毛生成钩子(名称:process-msg,钩子之前,模型:消息) 6.将其添加到钩子进程msg:

module.exports = function (options = {}) {
  return async context => {


    const user = context.params.user;
    const text = context.data.text;

    context.data = {

      userId: user.email,
      text,
      dateTime: new Date().getTime()
    }
    return context;
  };
};

使用邮递员,注册一个新帐户,然后进行身份验证以获取令牌。保存令牌并将其添加为Postman中的Authoriztation标头。然后,仅由于添加到授权标题中的令牌,您还应该从注册的用户那里获取用户电子邮件。

问候!

答案 1 :(得分:0)

go to authentication.js并找到app.service的定义。在此处,创建一个after hook,并添加您希望客户接收的详细信息

app.service('authentication').hooks({

  before: {
     ...//as you currently have it
  },
  after: {
    create: {
       hook => {
          // hook.result.accessToken is already provided
          delete hook.params.user.password
          hook.result.user = hook.params.user;
          hook.result.token_type = 'Bearer';
          hook.result.exp = 3600;
        }
    }
  }
})

我希望这对您有帮助

答案 2 :(得分:0)

因此,如果我理解正确,您是否想从钩子中获取用户对象?

您可以仅使用const user = context.user;完成此操作。