Недавно я разработал веб-приложение ASP. net MVC, которое использует Azure B2 C для аутентификации пользователей.
Меня попросили включить поток сброса пароля пользователя, чтобы пользователи могли выполнить сброс через самообслуживание.
Я создал поток пользователей на портале (используя правильный провайдер идентификации и установил Сброс пароля с помощью адреса электронной почты) и добавил код из примера Microsoft здесь однако каждый раз, когда я нажимаю кнопку сброса пароля , он просто перенаправляет меня обратно на экран входа в систему и никогда не достигает страницы сброса пароля.
Когда я нажимаю ссылку забытого пароля, вызывается метод, приведенный ниже, он корректно проходит по коду, но затем загружает имя входа стр.
Сброс пароля
public void ResetPassword(string redirectUrl)
{
// Let the middleware know you are trying to use the reset password policy (see OnRedirectToIdentityProvider in Startup.Auth.cs)
HttpContext.GetOwinContext().Set("Policy", Startup.PasswordResetPolicyId);
// Set the page to redirect to after changing passwords
var authenticationProperties = new AuthenticationProperties { RedirectUri = "/" };
HttpContext.GetOwinContext().Authentication.Challenge(authenticationProperties);
return;
}
Идентификатор политики правильный как в azure, так и в коде, когда я выполняю шаг, а все значения корректно вытягиваются (см. ниже):
Строка идентификатора политики (как использовано выше)
public static string PasswordResetPolicyId = ConfigurationManager.AppSettings["ida:ResetPasswordPolicyId"];
В Web.config, где определена политика
<add key="ida:ResetPasswordPolicyId" value="B2C_1_UserApp_ResetPassword" />
Я предоставил все примеры кода, которые я добавил для работы функции сброса, остальная часть кода включена в пример Microsoft Web App.
Кто-нибудь еще испытывал нечто подобное? Как я уже говорил ранее, когда вы нажимаете на ссылку забытого пароля, она делает то же, что и должна, и переходит к правильному контроллеру / методу, но затем возвращается к экрану входа.