我已经能够为我正在测试的租户正确设置注册/登录策略.我已设置重置密码属性,以允许每个人使用他们的电子邮件重置密码.目前,用户使用他们的电子邮件(也是他们的用户名),名字和姓氏进行注册.
但是,当我点击登录页面上的"我忘记密码"链接时,它只是将我重定向回同一页面.这里有什么我想念的吗?
Sac*_*aca 23
Azure AD B2C中有两种不同的密码重置机制:
登录策略:应用程序无需工作,单击"我忘记密码"会自动将用户重定向到通用的Microsoft品牌密码重置页面.
注册/登录策略:这需要应用程序执行一些额外的工作.单击"我忘记密码"会将用户重定向回应用程序并显示错误代码.应用程序需要检测请求中的错误代码,然后进一步将用户重定向到Azure AD B2C密码重置策略.密码重置策略可以进行广泛的自定义.
详细了解如何实现第二种方法,这里是连接到AuthenticationFailed通知并重定向到您自己的PasswordReset控制器操作的代码,来自B2C注册/登录快速入门,Startup.Auth.cs
private Task AuthenticationFailed(AuthenticationFailedNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> notification)
{
notification.HandleResponse();
if (notification.ProtocolMessage.ErrorDescription != null && notification.ProtocolMessage.ErrorDescription.Contains("AADB2C90118"))
{
// If the user clicked the reset password link, redirect to the reset password route
notification.Response.Redirect("/Account/ResetPassword");
}
else if (notification.Exception.Message == "access_denied")
{
// If the user canceled the sign in, redirect back to the home page
notification.Response.Redirect("/");
}
else
{
notification.Response.Redirect("/Home/Error?message=" + notification.Exception.Message);
}
return Task.FromResult(0);
}
Run Code Online (Sandbox Code Playgroud)
这里是代码PasswordReset控制器操作,它将用户重定向到密码重置B2C策略,来自相同的B2C注册/登录快速入门,帐户控制器
public void ResetPassword()
{
if (!Request.IsAuthenticated)
{
HttpContext.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties() { RedirectUri = "/" }, Startup.PasswordResetPolicyId);
}
}
Run Code Online (Sandbox Code Playgroud)
为了完整起见,请务必查看有关设置Azure AD B2C注册/登录策略的完整指南/概述
Bis*_*nna 19
我遇到了同样的问题,并提出了一个 JavaScript 解决方法,将“忘记密码” url 直接指向“重置密码”策略,而无需更改连接的网络应用程序(网络/移动/任何)中的代码
1. 我假设您有 3 个标准策略,如下面的屏幕截图:
2. 转到“注册和登录策略”并启用 Javascript
一种。单击“注册并登录策略”-> 属性
湾 按照下面的屏幕截图启用 JavaScript
3. 遵循Microsoft 文章,它将指导您如何为您的登录/注册页面创建自定义 UI
一种。下载现成的模板(海洋蓝)用于唱歌/注册(顺便说一下,它看起来比内置的经典旧模板 好得多;您也可以在其中更改背景和徽标)
https://github.com/Azure-Samples/Azure-AD-B2C-page-templates/tree/master/ocean_blue
在那里您也可以找到其他模板。
湾 将此文件夹按原样上传到任何托管或Azure blob 存储
C。只需确保为您的托管或 Azure 启用 CORS(通过 Azure 存储资源管理器的简单方法)
4. 编写所需的 Javascript。

添加所需的Javascript;单击链接后,我们将使用当前的 url,即注册,将策略名称替换为重置策略,确保将您的策略名称(不是我的)放在这里,或者如果您使用相同的策略,则将其保留为说明名字
<script>
$(function() {
console.log( "ready!" );
//Change Forget Password Text
$('#forgotPassword').html('Reset My Password');
//Handle Forget password click (fixing ADB2C error)
$( "#forgotPassword" ).click(function(e) {
e.preventDefault();
var oldUrl = window.location.href;
var newUrl = oldUrl.replace('B2C_1_signupsignin1','B2C_1_passwordreset1');
window.location.href = newUrl;
});
});
Run Code Online (Sandbox Code Playgroud)
注意:如果我错过了任何一步,请告诉我,我尽量详细说明。
| 归档时间: |
|
| 查看次数: |
8053 次 |
| 最近记录: |