基于真实项目理解 GraphQL
1. 创建 getUserData 查询
getUserData 函数需要是异步的,因为我们要执行一些异步操作,比如通过访问令牌(access token)获取已连接的用户(前提是用户已有有效会话),然后通过查看数据库来验证这是否为真实用户,这样可以防止有人修改 cookie 或进行某种注入攻击。若未找到已连接的用户,则返回一个包含空数据的用户对象。
getUserData: async (
_: any,
{ at }: { at: string },
{ models }: { models: IModels }
): Promise<any> => {
// 获取当前已连接的用户
const connectedUser = await getUserData(at)
if (connectedUser) {
// 验证用户是否仍然有效
const user = await getUserBy(
{
id: connectedUser.id,
email: connectedUser.email,
privilege: connectedUser.privilege,
active: connectedUser.active
},
models
)
if (user) {
return connectedUser
}
}
return {
id: '',
超级会员免费看
订阅专栏 解锁全文
759

被折叠的 条评论
为什么被折叠?



