要在使用Auth0时,在AppSync的context.identity中获取用户信息,需要按照以下步骤进行设置。
首先,确保您已经在Auth0中设置了AppSync的授权源,并且已经配置了正确的回调URL。
然后,在AppSync的GraphQL模式中,定义一个自定义指令来获取用户信息。例如:
directive @auth0UserInfo on FIELD_DEFINITION
type Query {
getUser: User @auth0UserInfo
}
type User {
id: ID!
name: String!
email: String!
}
接下来,在AppSync的解析器中,实现自定义指令的逻辑。在解析器中,您可以从context.identity中获取用户信息,并将其应用于相应的字段。例如:
// 引入 Auth0 的依赖库
const jwt = require('jsonwebtoken');
const resolvers = {
Query: {
getUser: (parent, args, context) => {
// 解析 JWT token
const token = context.identity.sub;
const decodedToken = jwt.decode(token);
// 获取用户信息
const user = {
id: decodedToken.sub,
name: decodedToken.name,
email: decodedToken.email
};
return user;
}
}
};
最后,在AppSync的配置中,将解析器与自定义指令关联起来。例如:
{
"version": "2017-02-28",
"resolvers": {
"Query.getUser": {
"typeName": "Query",
"fieldName": "getUser",
"dataSourceName": "MyDataSource",
"requestMappingTemplate": "..."
"responseMappingTemplate": "..."
}
},
"schema": {
"content": "...",
"definition": "...",
"resolvers": {
"auth0UserInfo": {
"responseMappingTemplate": "$util.toJson($context.result)"
}
}
}
}
通过以上步骤,您就可以在AppSync的context.identity中获取Auth0用户的信息,并在GraphQL解析器中使用它。