首页 > 解决方案 > 是否可以使用 Azure B2C 自定义策略中的声明转换来计算年龄组?

问题描述

我已成功创建了一个自定义策略,要求提供用户的出生日期。

接下来我想做的是根据用户的年龄定制注册体验。

我希望我可以使用声明转换和先决条件来做到这一点,但是通过查看我找到的文档,我看不到如何做到这一点。可能吗?

我有用户的出生日期,我想我可以得到当前的日期时间(TransformationMethod="GetCurrentDateTime"这里提到:https ://docs.microsoft.com/en-us/azure/active-directory-b2c/manage-user-access#capture -terms-of-use-agreement),但我看不到如何计算差异(对于年龄),或者在先决条件中使用年龄。

我能想到的唯一解决方法是通过 REST API 声明交换来计算年龄(或年龄组),但我不希望给系统增加更多复杂性。

谢谢大家!

标签: azure-ad-b2c

解决方案


我有用户的 DOB,我想我可以得到当前的日期时间(TransformationMethod="GetCurrentDateTime" 在这里提到: https ://docs.microsoft.com/en-us/azure/active-directory-b2c/manage- user-access#capture-terms-of-use-agreement),但我看不到如何计算差异(年龄),或在先决条件中使用年龄。

用于根据用户出生日期计算 ageGroup 的逻辑:

  1. 尝试通过列表中的国家代码查找国家。如果未找到该国家/地区,请回退到Default
  2. 如果国家元素中存在 MinorConsent 节点:

    一个。计算用户必须出生的日期才能被视为成年人。例如,如果当前日期为 2015 年 3 月 14 日,而 MinorConsent 为 18 岁,则出生日期不得晚于 2000 年 3 月 14 日。

    湾。将最小出生日期与实际出生日期进行比较。如果最小出生日期早于用户的出生日期,则计算返回 Minor 作为年龄组计算。

  3. 如果 Country 元素中存在 MinorNoConsentRequired 节点,请使用 MinorNoConsentRequired 中的值重复步骤 2a 和 2b。如果最小出生日期早于用户的出生日期,则 2b 的输出将返回 MinorNoConsentRequired。
  4. 如果两个计算都没有返回 true,则计算返回 Adult。

接下来我想做的是根据用户的年龄定制注册体验。

您可以尝试使用年龄门控来做到这一点。


推荐阅读