Azure B2C 在统一注册/登录流程中首先显示注册页面

时间:2021-06-13 17:16:26

标签: azure azure-ad-b2c azure-ad-b2c-custom-policy

我一直在使用关于 ContentDefinitions 的 b2c starter packsMSDN docs,以及 Azure B2C 产品的各个其他方面。

任何尝试过实施自定义政策的人都意识到,文档并不总是那么彻底或明确,而且通常在语法上不正确或缺少细节。

考虑到这一点,我想知道:

  • 是否可以在统一的注册/登录流程中在“登录”屏幕之前触发“注册”屏幕?
  • 另外,是否可以将“登录”屏幕链接添加到“注册”屏幕?
    我知道可以通过将 <Item Key="setting.showSignupLink">false</Item> 添加到 ContentDefinition 的 MetaData 来向 ContentDefinition 添加“注册”屏幕链接,但是在使用 api.signuporsignin ContentDefinition 时,此链接似乎是开箱即用的。
    到目前为止,我已尝试将 <Item Key="setting.showSigninLink">false</Item> 添加到我的 ContentDefinition 的 MetaData 块中,但无济于事(我在 MSDN 文档中的任何地方都没有找到,只是想尝试一下)。

澄清一下,在注册/登录流程中,我想在启动政策后立即显示“注册”屏幕,然后可以选择导航到“登录”页面。

任何建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

这不可能。您可以使用 B2C 请求电子邮件,然后在单个 B2C 政策中发送用户登录或根据它是否存在进行注册。

但要实现您所描述的用户体验,您需要将旅程分成两部分,分别进行注册和单独登录。

您可以通过将第 1 步和第 2 步转换为以下类型的单个步骤:ClaimsExchange 并分别引用登录或注册技术资料来实现这一点。

然后您需要使用户能够在两种策略之间切换。为此,请使用自定义 html 在每个策略中嵌入一个链接:myapp.com/signin 或 myapp.com/signup。然后,应用程序应向相应的 B2C 策略 ID 发送格式正确的身份验证请求。 https://docs.microsoft.com/en-us/azure/active-directory-b2c/customize-ui-with-html?pivots=b2c-custom-policy

架构参考在这里 https://docs.microsoft.com/en-us/azure/active-directory-b2c/self-asserted-technical-profile

您可以在此处了解更多信息 https://azure-ad-b2c.github.io/azureadb2ccommunity.io/docs/custom-policy-concepts/

答案 1 :(得分:0)

我想出的解决方案如下:
没有本地方式(即 - 您可以设置的 xml 策略配置参数)将重新启动流程/登录按钮添加到注册页面。

如果您的主要目标是从 '/signup' baack 导航到 '/signin',我建议将以下 html 添加到您的模板中,然后您可以根据自己的喜好设置样式:

(Note the call to `history.back()` on the anchor tag)
<body>
    <div class="container unified_container">
      <div class="row">
        <div class="col-lg-6">
          <div class="panel panel-default">
            <div class="panel-body">
              <div id="api"></div>
              <div id="signinContainer">
                <p>
                  Already Registered?
                  <a
                    id="signinLink"
                    type="submit"
                    aria-disabled="false"
                    aria-label="To Sign in screen"
                    href="javascript:history.back()"
                    >Log in</a
                  >
                </p>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </body>

或者,如果您知道要返回特定次数(例如,返回 3 页),则可以使用以下内容代替我们在上面看到的 history.back()
history.go(-3);