运用规则同步用户
Auth0 的规则可以设置为在每次发出登录请求时被调用。 请回顾一下 Auth0 配置的第二步,我们之前已创建一条应用自定义 JWT 声明的规则。 现在,我们需要在 Auth0 中设置一条规则,使 Auth0 用户与我们数据库中的用户同步。 以下代码片段可以帮助我们实现同样的目的。 再次使用“规则”功能,创建一条新的空规则并粘贴以下代码片段:
function (user, context, callback) {const userId = user.user_id;const nickname = user.nickname;const admin_secret = "xxxx";const url = "https://ready-panda-91.hasura.app/v1/graphql";const query = `mutation($userId: String!, $nickname: String) {insert_users(objects: [{id: $userId, name: $nickname, last_seen: "now()"}], on_conflict: {constraint: users_pkey, update_columns: [last_seen, name]}) {affected_rows}}`;const variables = { "userId": userId, "nickname": nickname };request.post({url: url,headers: {'content-type' : 'application/json', 'x-hasura-admin-secret': admin_secret},body: JSON.stringify({query: query,variables: variables})}, function(error, response, body){console.log(body);callback(null, user, context);});}
注: 根据你的应用程序适当修改x-hasura-admin-secret
和url
参数。
在此,我们发出对users
表进行变更的请求。
就是这样! 现在,每次成功注册或登录都会触发该规则,而且我们使用 Hasura GraphQL 变更将用户数据插入或更新到我们的数据库中。
上述请求使用id
和name
值对用户表执行变更。
Did you find this page helpful?
Start with GraphQL on Hasura for Free
- Build apps and APIs 10x faster
- Built-in authorization and caching
- 8x more performant than hand-rolled APIs