Я пытаюсь настроить клиент B2 C, используя политики вместо пользовательских потоков. Для этого я использую шаблон 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>
До этого момента, я думаю, я мог бы сказать, несовершеннолетний пользователь или нет. С этого момента я не знаю, как продолжить, чтобы достичь своей цели. Я читал документацию, но не нашел решения, и я не уверен, что это будет лучший подход.
Сталкивались ли вы когда-нибудь с подобным ограничением? Если да, то как лучше всего добиться этого и где я могу найти советы, которые помогут мне решить мою проблему?
Большое спасибо!
EDIT 1:
Я нашел этот вопрос , который объясняет похожую проблему, если не то же самое, и это заставляет меня спрашивать себя, можно ли достичь этого с помощью ClaimsTransformations и Predicates, или REST API - единственный способ получить ожидаемый результат?