我有一个使用 Firebase 构建的应用程序。基本上,我尝试构建一个允许用户使用电子邮件/密码注册然后使用相同的电子邮件/密码的身份验证系统>登录。
虽然我的 创建用户 身份验证系统正常运行,但我的 重置密码 系统仍在运行密码重置链接到指定的电子邮件地址,由于某种原因,我的登录验证系统似乎允许任何电子邮件地址(已注册或未注册)的任何人登录并且基本上是认证
总结一下: 在我的LoginViewController中输入电子邮件或密码后,它会立即进入下一个ViewController,无论该帐户以前是否曾经创建与否。
这些是我正在使用的广告:
pod 'Firebase/Database'
pod 'Firebase/Auth'
pod 'Firebase/Core'
pod 'Firebase/Messaging'
这是我在LoginViewController中用于电子邮件/密码验证的代码:
@IBAction func loginDidTouch(sender: AnyObject) {
if let email = textFieldLoginEmail.text, let password = textFieldLoginPassword.text {
FIRAuth.auth()?.signInWithEmail(email, password: password, completion: { (user, error) in
if error != nil {
// There was an error logging in to this account!
print("Unsuccessful sign-in")
} else {
print("Successful login!")
self.performSegueWithIdentifier("SuccessfulAuthentication", sender: nil)
}
})
}
}
我的Firebase控制台中的数据库规则:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
另外,我在另一个应用程序中使用完全相同的代码(,但 Firebase 2.5.1到Firebase 3.5.2 的迁移语法除外)我使用 Firebase 2.5.1 (旧版控制台)构建,它完全正常工作,不会登录任何尚未预先创建的帐户(注册) )。
更新修复:Firebase版本 3.6.0 (发布日期: 9/14 / 16 ):
- 使用iOS 10模拟器测试应用时,改进了Firebase身份验证的行为。
- 修复了用户在使用电子邮件地址和密码登录时提供无效电子邮件地址时的错误报告问题。
答案 0 :(得分:0)
是否可以通过从登录UIButton中拖动来创建segue?如果是,则无论身份验证是否成功,都将执行segue。
您需要确保在故事板中创建segue时,您可以按住Ctrl +拖动视图控制器(我认为它是视图控制器顶部的黄色按钮)而不是您的UIButton
答案 1 :(得分:0)
使用.isValidated
检查登录用户是否已验证其电子邮件地址。至于授权,请记住与认证不同。授权由Firebase实时数据库规则处理。