Auth0:如何在规则中使用用户配置文件?

Auth0: how to use User Profile in a rule?

我想使用以下规则将 last_iplast_login 添加为访问令牌中的声明:

function (user, context, callback) {
  const namespace = 'https://myapp.example.com/';
  context.accessToken[namespace + 'last_ip'] = user.last_ip;
  context.accessToken[namespace + 'last_login'] = user.last_login;
  callback(null, user, context);
}

规则内的用户不存在这两个属性:https://auth0.com/docs/rules/references/user-object

上下文对象上都没有:https://auth0.com/docs/rules/references/context-object

但它们存在于用户个人资料中:https://auth0.com/docs/users/references/user-profile-structure

问:如何在规则中使用我想要的任何用户配置文件字段?

我找到了可行的解决方案:

function (user, context, callback) {
  const namespace = 'https://myapp.example.com/';  

  var ManagementClient = require('auth0@2.19.0').ManagementClient;
  var management = new ManagementClient({
    token: auth0.accessToken,
    domain: auth0.domain
  });  

  management.getUser(user.user_id)
    .then(function(users){
      context.accessToken[namespace + 'last_ip'] = users[0].last_ip;
      context.accessToken[namespace + 'last_login'] = users[0].last_login;

      callback(null, user, context);
    })
    .catch(function(err){
      callback(err);
    });
}