因此,我尝试了FeatherJS,我能够注册一个新用户,请求一个令牌,还可以请求受保护的数据(在标题中使用Authorization)。
非常重要:我只使用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=函数(选项={}){return异步上下文=>{
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。
欢迎提出任何建议!提前感谢大家!
不太确定到底出了什么问题,但我现在只创建了一个新项目就可以解决了。
现在我确实在以前重新创建了这个项目,并得到了如上所述的问题,但这次它不知何故起了作用。
对于任何想知道我"修复"它的步骤的人:
1.创建新文件夹2.羽毛生成应用程序3.羽毛生成身份验证4.羽毛生成服务(服务名称:messages)5.羽毛生成钩子(名称:进程消息,钩子前,型号:消息)6.将此添加到挂钩进程消息:
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;
};
};
使用poster,注册一个新帐户,然后进行身份验证以获取令牌。保存令牌并将其添加为Postman内部的Authorization Header。然后,您还应该从注册的用户那里获得用户电子邮件,这仅仅是因为添加到授权标头中的令牌。
问候!
go to authentication.js
并找到app.service
的定义。就在那里,创建一个后挂钩,并添加您希望客户端接收的详细信息
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;
}
}
}
})
我希望这能帮助
所以,如果我理解正确,你想从钩子中获得用户对象吗?
您可以使用const user = context.user;
来完成此操作。