Я пытаюсь настроить клиент B2C, используя политики вместо пользовательских потоков. Для этого я использую Шаблон SocialAndLocalAccount в качестве стартовой базы.
На странице регистрации я добавил настраиваемую заявку, чтобы спросить пользователя о дате его рождения. Если пользователь указывает дату, которая делает его / ее несовершеннолетним (+18), я хотел бы отобразить сообщение об ошибке проверки (например, то, которое вы можете установить с помощью предикатов) и запретить пользователю регистрироваться с помощью кнопка создания отключена.
Пока вот что у меня есть:
-Я создал два новых утверждения для хранения логического значения, которое сообщало бы мне, несовершеннолетний пользователь или нет, и второе утверждение для хранения текущего времени.
<ClaimType Id="systemDateTime">
<DisplayName>Today's date</DisplayName>
<DataType>dateTime</DataType>
</ClaimType>
<ClaimType Id="isNotUnderAge">
<DisplayName>Indicates whether user being under age or not</DisplayName>
<DataType>boolean</DataType>
<AdminHelpText>User must be over 18</AdminHelpText>
</ClaimType>
Я добавил в ClaimsTransformation, чтобы получить текущую дату и сравнить ее с выбранной (сравнение дат):
<!-- Check user under age -->
<ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
</OutputClaims>
</ClaimsTransformation>
<ClaimsTransformation Id="CheckBirthDateIsNotUnderAge" TransformationMethod="DateTimeComparison">
<InputClaims>
<InputClaim ClaimTypeReferenceId="birthDate" TransformationClaimType="firstDateTime" />
<InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="secondDateTime" />
</InputClaims>
<InputParameters>
<InputParameter Id="operator" DataType="string" Value="later than" />
<InputParameter Id="timeSpanInSeconds" DataType="int" Value="568025136" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isNotUnderAge" TransformationClaimType="result" />
</OutputClaims>
</ClaimsTransformation>
До этого момента, я думаю, я смогу сказать, несовершеннолетний пользователь или нет. С этого момента я не знаю, как продолжить, чтобы достичь своей цели. Я читал документацию, но не нашел решения, и я не уверен, что это будет лучший подход.
Вы когда-нибудь сталкивались с подобным ограничением? Если да, то как лучше всего этого добиться и где я могу найти советы, которые помогут мне решить мою проблему?
Большое спасибо!
РЕДАКТИРОВАТЬ 1:
Я нашел этот вопрос, который объясняет аналогичную проблему, если не то же самое, и заставляет меня задаться вопросом: можно ли добиться этого с помощью ClaimsTransformations и Predicates или REST API - единственный способ получить ожидаемый результат?