Aprenda a administrar metadatos de aplicación, metadatos de usuario y metadatos de cliente con Rules.
La fecha de fin de vida (EOL) de Rules y Hooks será el 18 de noviembre de 2026, y ya no están disponibles para nuevos inquilinos creados a partir del 16 de octubre de 2023. Los inquilinos existentes con Hooks activos conservarán el acceso al producto Hooks hasta su fin de vida.Le recomendamos encarecidamente que use Actions para extender Auth0. Con Actions, tiene acceso a información de tipos más completa, documentación integrada y paquetes públicos de npm, y puede conectar integraciones externas que mejoran su experiencia general de extensibilidad. Para obtener más información sobre lo que ofrece Actions, consulte Comprenda cómo funcionan las Actions de Auth0.Para ayudarle con la migración, ofrecemos guías que le ayudarán a migrar de Rules a Actions y migrar de Hooks a Actions. También contamos con una página dedicada, Move to Actions, que destaca comparaciones de funcionalidades, una demostración de Actions y otros recursos para ayudarle en su proceso de migración.Para obtener más información sobre la deprecación de Rules y Hooks, lea nuestra entrada de blog: Preparación para el fin de vida de Rules y Hooks.
Puede leer, actualizar y eliminar metadatos mediante Auth0 Rules. En las siguientes secciones, nos referiremos a este ejemplo, en el que el usuario y su información están representados por el siguiente fragmento de JSON:
Puede leer metadatos mediante Rules con la . También puede buscar información relacionada con el perfil en user_metadata, como:
name
nickname
given_name
family_name
De forma predeterminada, los atributos del perfil de usuario proporcionados por distintos de Auth0 (como Google, Facebook o X) no se pueden editar directamente porque se actualizan desde el proveedor de identidad cada vez que el usuario inicia sesión. Para obtener más información sobre los atributos de los proveedores de identidad, consulte Configurar la conexión del proveedor de identidad para las actualizaciones del perfil de usuario.Para poder editar los atributos raíz name, nickname, given_name, family_name o picture del perfil de usuario normalizado, debe configurar la sincronización de su conexión con Auth0 para que los atributos del usuario se actualicen desde el proveedor de identidad solo cuando se cree el perfil de usuario. Estos atributos raíz quedarán disponibles para editarlos individualmente o mediante importaciones masivasComo ejemplo, suponga que los siguientes metadatos están almacenados para un usuario con la dirección de correo electrónico jane.doe@example.com:
Con el ejemplo de metadatos anterior, puede consultar elementos específicos del conjunto de datos en Auth0 Rules o mediante una llamada a la Management API, de la siguiente manera:
Cualquier fragmento JSON válido puede utilizarse como metadatos, pero ten en cuenta que user.app_metadata es Undefined de forma predeterminada.Para leer los metadatos disponibles, tendrás que acceder a la propiedad correcta del usuario.
Leer los metadatos de la aplicación (clientMetadata)
Los metadatos de la aplicación (clientMetadata) son una propiedad opcional de nivel superior del objeto context. Las aplicaciones existentes no tendrán ningún valor asignado a esta propiedad.
function(user, context, callback){ context.clientMetadata = context.clientMetadata || {}; if (context.clientMetadata.usersuppliedkey1 === 'black'){ // este código no se ejecutaría para el usuario } ...}
Actualizar al mismo tiempo los metadatos de la aplicación y del usuario
Para reducir el tiempo de procesamiento de la Rule, puede actualizar tanto app_metadata como user_metadata en la misma Rule:
function(user, context, callback){ var q = require('q'); user.app_metadata = user.app_metadata || {}; user.user_metadata = user.user_metadata || {}; // actualizar el user_metadata que formará parte de la respuesta user.user_metadata.preferences = user.user_metadata.preferences || {}; user.user_metadata.preferences.fontSize = 12; // actualizar el app_metadata que formará parte de la respuesta user.app_metadata.roles = user.app_metadata.roles || []; user.app_metadata.roles.push('admin'); // guardar la actualización de app_metadata var appMetadataPromise = auth0.users.updateAppMetadata(user.user_id, user.app_metadata); // guardar la actualización de user_metadata var userMetadataPromise = auth0.users.updateUserMetadata(user.user_id, user.user_metadata); // usar la librería q para esperar a que todas las promesas se completen q.all([userMetadataPromise, appMetadataPromise]) .then(function(){ callback(null, user, context); }) .catch(function(err){ callback(err); });}
Esto produce la siguiente representación JSON de los detalles del perfil de usuario:
Ejemplo de cómo eliminar un único valor de una propiedad
Para eliminar un único valor de una propiedad, quite ese valor concreto. Por ejemplo, para quitar el rol writer del perfil de usuario:
function(user, context, callback){ user.app_metadata = user.app_metadata || {}; user.app_metadata.roles = user.app_metadata.roles || []; var index = user.app_metadata.roles.indexOf('writer'); if (index !== -1){ // actualizar el app_metadata que formará parte de la respuesta user.app_metadata.roles.splice(index, 1); } // guardar la actualización del app_metadata auth0.users.updateAppMetadata(user.user_id, user.app_metadata) .then(function(){ callback(null, user, context); }) .catch(function(err){ callback(err); });}
Esto da lugar a la siguiente representación JSON del perfil de usuario: