我们正在使用Azure B2C的自定义注册/登录策略,尝试使用外语电子邮件地址登录时遇到问题。
我们遵循了微软的教程,并使用了自定义的starter XML文件here。
我们最初发现,我们甚至不能使用外语电子邮件地址注册(例如伊伊伊伊伊伊伊@伊伊伊。但是我们注意到TrustFrameworkBase.xml启动文件中有一些我们可以操作的正则表达式:
<ClaimType Id="email">
<DisplayName>Email Address</DisplayName>
<DataType>string</DataType>
<DefaultPartnerClaimTypes>
<Protocol Name="OpenIdConnect" PartnerClaimType="email" />
</DefaultPartnerClaimTypes>
<UserHelpText>Email address that can be used to contact you.</UserHelpText>
<UserInputType>TextBox</UserInputType>
<Restriction>
<Pattern RegularExpression="^[a-zA-Z0-9.!#$%&'^_`{}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" HelpText="Please enter a valid email address." />
</Restriction>
</ClaimType>所以我们改变了正则表达式,我们可以注册了!
但是,当我们试图用我们刚刚注册的帐户登录时,我们收到一条消息,说“请输入一个有效的电子邮件地址”。
我已经尝试了这种开箱即用的注册/注册策略,我得到了同样的结果。HTML文本框中有一个regex模式属性,如下所示:
<input type="email" id="logonIdentifier" name="Username or email address" pattern="^[a-zA-Z0-9.!#$%&’'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" placeholder="Email Address" value="" tabindex="1">这会阻止登录。
如果我进入并删除这个模式正则表达式,我实际上可以登录,所以我知道它可以工作。我只需要删除这个模式属性。
我一定漏掉了什么。有人能告诉我我需要配置什么才能使用这样的电子邮件地址登录吗?
发布于 2018-09-06 23:02:28
signIn的电子邮件正则表达式模式不是从策略的ClaimType中的" pattern“属性中提取的。这就是你观察这个行为的原因。
您可以通过在技术配置文件元数据中添加语言设置,如下所示。
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
<Metadata>
...
<Item Key="language.email_pattern">{desired_pattern}</Item>
</Metadata>
….
</TechnicalProfile>https://stackoverflow.com/questions/52074563
复制相似问题