Auth0:如何在规则中使用用户配置文件?
Auth0: how to use User Profile in a rule?
我想使用以下规则将 last_ip
和 last_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);
});
}
我想使用以下规则将 last_ip
和 last_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);
});
}