You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure AD B2C语言自定义配置中字符串添加换行无效如何解决

问题描述

在自有应用接入Azure AD B2C身份认证服务并启用国际化支持时,基于官方JSON格式语言文件自定义登录页面的过程中,需要在部分字符串内容间添加换行,但所有尝试的换行写法都无法生效。
先后尝试在字符串中添加\n、\\n、<br />、&#13;&#10;、&NewLine;等换行标识,均未实现预期效果,使用的配置代码如下:

[
  {
    "ElementType": "UxElement",
    "ElementId": null,
    "StringId": "forgotpassword_link",
    "Override": true,
    "Value": "Forgot your password? (Vous avez oublié?)"
  },
  {
    "ElementType": "UxElement",
    "ElementId": null,
    "StringId": "heading",
    "Override": true,
    "Value": "Sign in  \n \\n (Ouverture de session)"
  }
]
解决方案

直接在语言文件字符串值内写入转义换行符、HTML标签不生效的核心原因是:Azure AD B2C渲染自定义语言字符串时,默认会对值做HTML转义处理,所有写入的标签、转义换行符都会被当成纯文本展示,不会被解析为换行格式。
可根据你当前使用的用户流类型,选择以下任意一种可行方案:

  • 方案1:自定义页面布局+CSS控制(推荐,无配置侵入)
    先定位需要加换行的字符串对应的页面DOM元素,比如示例中的heading对应登录页标题、forgotpassword_link对应忘记密码链接。在你上传的自定义HTML模板中,给对应元素添加CSS样式控制换行:如果是双语长文本场景,可以给文本容器设置固定宽度触发自动换行;如果需要在指定位置强制断行,可以通过CSS伪元素::after插入换行符实现效果,不需要修改语言包配置。
  • 方案2:自定义策略开启HTML解析(仅适用于IEF自定义策略)
    如果你使用的是自定义策略(Identity Experience Framework框架下的流)而非内置用户流,可以在策略的ContentDefinition配置中,给对应页面的DataUri参数追加allowHtmlInStrings=true查询参数。配置生效后,就可以直接在语言文件的Value字段中写入<br/>标签,渲染时会被正确解析为换行,示例配置如下:
    {
      "ElementType": "UxElement",
      "ElementId": null,
      "StringId": "heading",
      "Override": true,
      "Value": "Sign in<br/>(Ouverture de session)"
    }
    
    注意:内置用户流(b2c-user-flow模式)不支持该参数配置,无法通过该方式开启HTML解析。
  • 方案3:前端JS替换标记实现换行(全场景通用)
    不管是内置用户流还是自定义策略,都可以在自定义HTML模板中加入内联JS,页面加载完成后获取对应文本的DOM节点,将提前在语言文件中写入的特殊标记(比如{br})替换为<br/>标签即可。
    示例JS代码:
    window.addEventListener('load', () => {
      // 替换标题处的换行标记
      const heading = document.getElementById('heading');
      if (heading) heading.innerHTML = heading.textContent.replaceAll('{br}', '<br/>');
      // 替换忘记密码链接处的换行标记
      const forgotPwdLink = document.getElementById('forgotpassword_link');
      if (forgotPwdLink) forgotPwdLink.innerHTML = forgotPwdLink.textContent.replaceAll('{br}', '<br/>');
    })
    
    对应语言文件的Value字段只需要在需要换行的位置写入{br}即可,比如"Value": "Sign in{br}(Ouverture de session)"。

注意:不要尝试在语言文件中直接写入Unicode换行符或转义控制序列,Azure AD B2C的语言包解析逻辑会直接过滤这类字符,不会保留到最终渲染的页面文本中。


内容的提问来源于stack exchange,提问作者MJ X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:09:22