B2C: локализация сообщений, исходящих из REST API

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

Основная идея заключается в том, что 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, чтобы показать вместо сообщения на новом экране (например, Как отобразить ошибку, возвращаемую пользовательской конечной точкой REST API, на последующем этапе оркестрации?). Однако варианты локализации и для этого ускользают от меня.


person Alex AIT    schedule 21.01.2020    source источник


Ответы (2)


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

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

person Alex    schedule 21.01.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>
person Alex AIT    schedule 22.01.2020