Azure B2 C Ограничение по возрасту при регистрации с помощью настраиваемых политик - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь настроить клиент 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 - единственный способ получить ожидаемый результат?

1 Ответ

0 голосов
/ 05 мая 2020

Похоже, у вас есть правильная идея, если вы хотите полностью запретить всех пользователей младше 18 лет. Один из вариантов - вы можете использовать технический профиль проверки для вызова преобразования AssertBooleanClaimIsEqualToValue, которое отобразит настраиваемое сообщение об ошибке на знаке. на странице, если пользователю меньше 18 лет и он не разрешает продолжить. См., Например, Документацию Microsoft: преобразования логических утверждений .

Если вы действительно хотите, чтобы кнопка «Продолжить» была серой, вы можете отобразить isNotUnderage как заявку только для чтения и скрыть ее с помощью CSS, а затем использовать JS, чтобы затенять кнопку в зависимости от ее значения. .

Третий вариант - добавить OrchestrationStep перед тем, как представить пользователю свои параметры регистрации с предварительным условием пропуска, если пользователю больше 18 лет, который отобразит новый самоутверждаемый технический профиль, который вы можете настроить до отобразить сообщение об ошибке (только утверждение абзаца) и удалить кнопку продолжения из. Обратной стороной здесь является то, что вам необходимо собрать возраст пользователя, прежде чем предлагать ему варианты регистрации, что может усложнить ситуацию.

...