我在iOS上有一个应用程序,当用户注册时(所以它的电子邮件和ID是在firebase认证用户)我用sendPasswordReset功能重置密码,它的工作很好,但如果我键入电子邮件,我没有在firebase功能仍然工作(我认为它应该抛出一个错误,“在firebase没有这样的帐户”)。请帮助我...
我在AuthManager中编写了这个函数,并将其传递给视图:
func resetPassword(email: String) async throws {
do {
try await auth.sendPasswordReset(withEmail: email)
} catch {
print("Throw an error")
throw AuthErrorHandler.resetPasswordError
}
}
@MainActor
final class PasswordRecoveryViewModel: ObservableObject {
@Inject private var authenticationManager: AuthenticationManagerInterface
@Published var email: String = ""
func resetPassword() async throws {
try validation()
try await authenticationManager.resetPassword(email: email)
}
private func validation() throws {
try Validation.validateField(email, fieldName: "email")
try Validation.validateEmail(email: email)
}
}
private var recoveryButton: some View {
Button {
Task {
do {
try await viewModel.resetPassword()
print("password reset!")
launchViewModel.showRecoveryView.toggle()
} catch {
self.launchViewModel.error = error
}
}
} label: {
Text("Recovery now!")
.withMainButtonViewModifier()
}
}
1条答案
按热度按时间mutmk8jj1#
如果我输入电子邮件,我没有在firebase功能仍然工作(我认为它应该抛出一个错误,“在firebase没有这样的帐户”
在9月15日之后创建的Firebase项目上,默认情况下启用email enumeration protection设置。这会更改您从API返回的响应,使恶意用户无法使用这些API扫描您的项目,但不幸的是,也使您的用例无法使用。
更多关于这一点,请参阅我链接的文档和: