如何检查用户的电子邮件是否已验证?

devOP1

我正在开发一个应用程序,用户可以在其中登录或验证其电子邮件。但是,如果未验证其电子邮件,则他们将只能访问一页,如果已验证,则它们将可以访问整个应用程序(AppView)。

到目前为止,使用我拥有的代码,我可以创建用户并登录他们,从而使他们可以访问整个应用程序。但是我不确定如果他们的电子邮件未经验证,如何显示其他视图。

这是我用于检查用户是否登录的代码:

func listen () {
    // monitor authentication changes using firebase
    handle = Auth.auth().addStateDidChangeListener { (auth, user) in
        if let user = user {
            // if we have a user, create a new user model
            print("Got user: \(user)")
            self.isLoggedIn = true
            self.session = User(
                uid: user.uid,
                displayName: user.displayName, email: "")
        } else {
            // if we don't have a user, set our session to nil
            self.isLoggedIn = false
            self.session = nil
        }
    }
}

在这里,我选择应显示的视图:

struct ContentView: View {


@EnvironmentObject var session: SessionStore

func getUser () {
      session.listen()
  }

var body: some View {
    
    Group {
      
        if (session.session != nil) {
        
        // I need to check here if the user is verified or not
        
        AppView() //full application view
        
      } else {
        
        OnBoardingView()
        
      }
    }.onAppear(perform: getUser)
    
  }

}

弗兰克·范普菲伦

您可以通过检查User.isEmailVerified属性来查看用户是否已通过验证您可能遇到的主要问题是,单击电子邮件中的链接后,此属性不会立即刷新,因为iOS无法知道您单击了链接。

当客户端isEmailVerified刷新令牌时,客户端将自动获取新值,该值每小时自动发生一次,当用户再次明确登录时,或者您明确强制它获取新的ID令牌时,也会自动获取

使此流程为您的用户顺利运行的常用方法是:

  • 当iOS重新获得焦点时,强制刷新ID令牌。
  • 在“等待您验证电子邮件地址”屏幕上,定期强制刷新ID令牌。
  • 向用户显示一个按钮“我已验证我的电子邮件地址”,然后刷新ID令牌。

或者,您可以在向用户发送电子邮件后将其注销,然后检查他们何时再次登录。虽然这更易于实现,但上述流程更加用户友好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用验证器检查电子邮件是否已注册

Laravel 检查用户模型是否实现电子邮件验证

AWS Cognito身份池:如何检查电子邮件属性是否已验证

如何检查用户电子邮件是否已保存在数据库中

如何发送已创建用户的电子邮件验证?

如何通过侦听器检查用户是否通过电子邮件验证?

Swift Firebase:发送电子邮件后如何检查用户是否经过验证?

如何检查MailChimp中是否已订阅电子邮件?

如何检查电子邮件是否已授权

如何检查文本是否不是电子邮件的验证?

如何检查电子邮件是否在 firebase 中得到验证

即使我没有文字用户对象,如何检查用户电子邮件是否在 Firebase 中得到验证

提交表单时,如何检查用户电子邮件是否已存在于我的数据库中?

用户使用javascript(而非jquery)如何验证电子邮件(用户已输入)

在使用“忘记密码”发送密码重置电子邮件之前,检查用户是否已激活

检查具有指定电子邮件的用户是否已存在于 firebase 中

如何返回已验证的电子邮件以及用户端点?

如何使用Android Studio在Firebase中检查“用户电子邮件已存在”

用户身份验证以检查唯一的电子邮件

如何知道Firebase中的注册电子邮件是否已通过验证?

如何在创建帐户之前检查电子邮件是否已存在 (Swift)

如何检查Firestore数据库中是否已存在电子邮件

如何检查电子邮件是否已存在于数据库中

如何检查所选电子邮件和名称是否已存在于 MongoDB 中

如何以编程方式检查电报中是否已注册电子邮件?

如何检查电子邮件或电话是否已存在于 mongodb 数据库中

Android-如何通过检查已发送邮件来确定是否已发送电子邮件

如何在Firebase中检查用户电子邮件和密码验证以登录

Laravel 5.7检查电子邮件是否通过验证