B2 C: локализация для сообщений, исходящих из REST API - PullRequest
0 голосов
/ 21 января 2020

В настоящее время я использую этот пример для использования API отдыха при регистрации пользователя.

Основная идея c заключается в том, что API выдает ошибку 409 Conflict, чтобы прервать регистрацию .

// Can I return a special "StringId" or something here for localization?
return new ConflictObjectResult(new B2CResponseModel($"A verification email sent to you. Please open your mail box and click on the link. If you didn't receive the email, please click on the 'Send verification email' button.", HttpStatusCode.Conflict));

Я хочу показать пользователю сообщение, локализованное на его текущий язык. Я бы предпочел выполнить локализацию в рамках пользовательских политик, но я бы также принял решение в рамках API (для этого необходимо получить язык пользователя).

Есть ли способ сделать эту локализацию? Как вернуть StringId через API и использовать это в политике?

Я также рассматриваю возможность не возвращать ошибку из API, чтобы вместо этого показать сообщение на новом экране (например, Как отобразить ошибку, возвращенную из пользовательской конечной точки API REST на следующем шаге оркестровки? ). Однако варианты локализации для этого также ускользают от меня.

Ответы [ 2 ]

0 голосов
/ 22 января 2020

В случае, если кто-то ищет способ отправить локаль пользователя в REST API:

https://docs.microsoft.com/nb-no/azure/active-directory-b2c/claim-resolver-overview

        <TechnicalProfile Id="REST-API-SendVerificationEmail">
          <DisplayName>Sign-Up send link</DisplayName>
          <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
          <Metadata>
            <Item Key="ServiceUrl">https://xxxx</Item>
            <Item Key="AuthenticationType">None</Item>
            <Item Key="SendClaimsIn">Body</Item>
          </Metadata>
          <InputClaims>
            <InputClaim ClaimTypeReferenceId="email" />
            <InputClaim ClaimTypeReferenceId="userLanguage" DefaultValue="{Culture:LanguageName}" />
            <InputClaim ClaimTypeReferenceId="policyId" PartnerClaimType="policy" DefaultValue="{Policy:PolicyId}" />
            <InputClaim ClaimTypeReferenceId="scope" DefaultValue="{OIDC:scope}" />
            <InputClaim ClaimTypeReferenceId="clientId" DefaultValue="{OIDC:ClientId}" />
          </InputClaims>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
        </TechnicalProfile>
0 голосов
/ 21 января 2020

Надеюсь, это похоже на это

См. Ответ Jas Suri . Передайте параметр локализации в API и верните локализованное сообщение или можете вернуть код ошибки и на основе этого отображенного переведенного сообщения использовать саму политику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...