Auth0 Actions交易元数据:优化认证流程的新方案

本文介绍了Auth0 Actions交易元数据功能,该功能为开发者提供了在Actions间存储和传递变量的专用方法,可减少API调用次数、简化代码并提升性能,是企业级身份认证流程的重要优化方案。

引入Auth0 Actions交易元数据

我们很高兴宣布为Auth0 Actions发布Actions交易元数据功能,这一重要新特性旨在提升认证流程的效率和可维护性。

传统解决方案的挑战

在编写Actions时,开发者需要在Actions引擎中本地存储变量,但一直缺乏高效的方法。这导致开发者不得不滥用其他功能来模拟本地存储,从而造成更高的管理API使用量、调试困难以及代码不可靠。

两种常见的变通方案

Auth0 Actions缓存

之前常见的变通方案是利用Actions缓存,该缓存为开发者提供了缓存机制以减少获取令牌或重新获取数据的开销。但缓存不应用于交易或用户相关数据,因为它是跨交易的。此外,缓存在不同Actions容器间存在差异,在可扩展环境中不是临时变量的可靠解决方案。

配置文件元数据

另一种变通方案是使用配置文件元数据:

步骤1:在Action 1中,在用户的应用或用户元数据中创建临时变量:

1
2
api.user.setUserMetadata('tmp1', 1);
api.user.setAppMetadata('tmp2', 2);

步骤2:在Action 2中,通过event.user.user_metadata或event.user.app_metadata对象访问这些变量:

1
2
console.log(event.user.user_metadata?.tmp1);
console.log(event.user.app_metadata?.tmp2);

步骤3:在Action 3中,必须将临时元数据属性显式设置为null以避免在用户配置文件中持久化:

1
2
api.user.setUserMetadata('tmp1', null);
api.user.setAppMetadata('tmp2', null);

Actions交易元数据解决方案

现在,使用Actions交易元数据,流程变得更加简化:

步骤1:在Action 1中,使用api.transaction.setMetadata对象设置变量。数据可立即在同一Action和后续Actions中访问:

1
api.transaction.setMetadata('hello', 'Auth0');

步骤2:在Action 2中,无需外部API调用即可直接访问数据:

1
2
console.log('Hello ', event.transaction?.metadata?.hello);
// 输出 "Hello Auth0"

步骤3:无需清理,因为临时变量在Actions序列执行后会自动清除,但您也可以根据需要将其显式设置为null。

主要优势

  • 减少API使用:早期访问阶段的客户通过采用交易元数据而非配置文件存储,观察到Auth0管理API使用量减少了高达87.5%
  • 简化代码:消除复杂的变通方案,使Action代码更简单,维护更轻松
  • 提升性能:数据存在于Actions引擎内部,减少延迟和对外部API调用的依赖
  • 即时访问:变量可在同一Action和后续Actions中立即访问,无需额外API调用

此早期访问版本面向企业客户,支持登录后Actions触发器,未来计划将功能扩展到其他触发器。

如需详细文档,请参阅Actions交易元数据文档

祝您开发愉快!

这些材料仅供一般信息目的。在做出任何更改或代码更新之前,请内部讨论并进行任何必要的测试。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计