FeathersJS - 使用钩子获取用户信息?
FeatherJS - Get user information with hook?
所以我尝试了 FeatherJS,我能够注册一个新用户,请求一个令牌并请求受保护的数据(使用 header 中的授权)。
非常重要:我只使用 HTTP Rest API。文档似乎经常指向我不使用的客户端 feathers 模块。
所以目前我有一个超级简单的设置,我有一个带有文本的消息服务。一个 before 钩子来处理消息。这里我想取回用户信息:
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
}
我尝试添加令牌,当我通过授权 post 一条消息时,我总是提交令牌,如下所示:
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 中处理这个问题。
如有任何建议,我们将不胜感激!提前谢谢大家!
不太确定到底出了什么问题,但我现在通过创建一个新项目就可以正常工作了。
现在我之前确实重新创建了这个项目并遇到了上述问题,但这次它以某种方式起作用了。
对于任何想知道我对 'fix' 所做的步骤的人:
1.Create新建文件夹
2.羽毛生成app
3.羽毛生成认证
4.羽毛生成服务(服务名称:messages)
5.羽毛生成hook(name:process-msg,before hook,model:messages)
6. 将此添加到挂钩 process-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;
};
};
使用邮递员,注册一个新帐户然后进行身份验证以获取令牌。保存令牌并将其作为 Authoriztation Header 添加到 Postman 中。然后,您还应该从已注册的用户那里取回用户电子邮件,这仅仅是因为添加到授权中的令牌 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;
即可完成此操作。
所以我尝试了 FeatherJS,我能够注册一个新用户,请求一个令牌并请求受保护的数据(使用 header 中的授权)。
非常重要:我只使用 HTTP Rest API。文档似乎经常指向我不使用的客户端 feathers 模块。
所以目前我有一个超级简单的设置,我有一个带有文本的消息服务。一个 before 钩子来处理消息。这里我想取回用户信息:
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
}
我尝试添加令牌,当我通过授权 post 一条消息时,我总是提交令牌,如下所示:
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 中处理这个问题。
如有任何建议,我们将不胜感激!提前谢谢大家!
不太确定到底出了什么问题,但我现在通过创建一个新项目就可以正常工作了。
现在我之前确实重新创建了这个项目并遇到了上述问题,但这次它以某种方式起作用了。
对于任何想知道我对 'fix' 所做的步骤的人:
1.Create新建文件夹 2.羽毛生成app 3.羽毛生成认证 4.羽毛生成服务(服务名称:messages) 5.羽毛生成hook(name:process-msg,before hook,model:messages) 6. 将此添加到挂钩 process-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;
};
};
使用邮递员,注册一个新帐户然后进行身份验证以获取令牌。保存令牌并将其作为 Authoriztation Header 添加到 Postman 中。然后,您还应该从已注册的用户那里取回用户电子邮件,这仅仅是因为添加到授权中的令牌 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;
即可完成此操作。