angular中的登录身份验证

angular中的登录身份验证,angular,firebase,Angular,Firebase,我是angular的新手,正在尝试实现一个简单的注册和登录身份验证。我可以轻松注册,将数据推送到firebase。我在这里遇到的问题是,当登录时,如果用户名和密码匹配,它将重定向到另一个页面,否则重定向抛出错误 html: 使用以下代码: SignIn(name,password){ let username = name; let password = password; let credentials = btoa(username + '??' + btoa(password)

我是angular的新手,正在尝试实现一个简单的注册和登录身份验证。我可以轻松注册,将数据推送到firebase。我在这里遇到的问题是,当登录时,如果用户名和密码匹配,它将重定向到另一个页面,否则重定向抛出错误

html:

使用以下代码:

SignIn(name,password){
  let username = name;
  let password = password;
  let credentials = btoa(username + '??' + btoa(password)) // 

  firebase.database().ref('/users').on('child_added', (data)=>{
      let dat = data.val()
      this.values.push(dat)
      let check = this.values.filter(val => val.name == username && val.name == password );

      //after that am stucked 
      if (check && check.length > 0){
        this.router.navigateByUrl('/');}
      } else {
        // you can also use a div to show error. Just create a string
        // varibale and use ngIf to show the error message
        alert("Username or password doesn't match");
      }
  )
}
希望它能帮助您使用以下代码:

SignIn(name,password){
  let username = name;
  let password = password;
  let credentials = btoa(username + '??' + btoa(password)) // 

  firebase.database().ref('/users').on('child_added', (data)=>{
      let dat = data.val()
      this.values.push(dat)
      let check = this.values.filter(val => val.name == username && val.name == password );

      //after that am stucked 
      if (check && check.length > 0){
        this.router.navigateByUrl('/');}
      } else {
        // you can also use a div to show error. Just create a string
        // varibale and use ngIf to show the error message
        alert("Username or password doesn't match");
      }
  )
}

希望对您有所帮助

您可以使用firebase身份验证

 signInUser() {
    this.fire.auth
      .signInWithEmailAndPassword(this.email.value, this.password.value)
      .then(data => {
        this.currentUserUid = JSON.stringify(data.uid);
        sessionStorage.setItem("Sessionuid", this.currentUserUid);
        sessionStorage.setItem("Sessioneml", data.email);

        console.log("Success! You're logged in");

          this.navCtrl.push(HomePage, {
            uid: this.currentUserUid
          });

        // user is logged in
      })
      .catch(error => {
        console.log("got an error", error);
        this.alert(error.message);
      });

  }

您可以使用firebase身份验证

 signInUser() {
    this.fire.auth
      .signInWithEmailAndPassword(this.email.value, this.password.value)
      .then(data => {
        this.currentUserUid = JSON.stringify(data.uid);
        sessionStorage.setItem("Sessionuid", this.currentUserUid);
        sessionStorage.setItem("Sessioneml", data.email);

        console.log("Success! You're logged in");

          this.navCtrl.push(HomePage, {
            uid: this.currentUserUid
          });

        // user is logged in
      })
      .catch(error => {
        console.log("got an error", error);
        this.alert(error.message);
      });

  }

成功后你必须走回头路

this.router.navigateByUrl('./');
或转到其他页面

this.router.navigateByUrl('./LoginDenied');

成功后你必须走回头路

this.router.navigateByUrl('./');
或转到其他页面

this.router.navigateByUrl('./LoginDenied');


为什么不使用firebase身份验证?。您正在重新发明轮子。使用本文使用firebase创建您的身份验证系统,我想像这样登录prashanth@newtt.comThis这很危险,你不应该这样做。前端代码可以被操纵,这在本例中是一个巨大的安全问题。使用firebase auth!唯一的方法是firebase身份验证,或者我可以使用其他方法。?为什么不使用firebase身份验证?。您正在重新发明轮子。使用本文使用firebase创建您的身份验证系统,我想像这样登录prashanth@newtt.comThis这很危险,你不应该这样做。前端代码可以被操纵,这在本例中是一个巨大的安全问题。使用firebase auth!唯一的方法是firebase auth,或者我可以使用其他方法。?如何检查是否成功我不尝试你的示例,但我认为“检查”应该有成功的结果。如何检查是否成功我不尝试你的示例,但我认为“检查”如果成功,应该有你的结果。我只能使用gmail thinkgmail只是登录我检查并让你知道任何成功@Prashanth的另一种方式?我遵循了这一点我只能使用gmail thinkgmail只是登录我检查并让你知道任何成功@Prashanth的另一种方式?我遵循了即使不匹配它也只重定向到如果case将此代码console.log(check)放在let check=this.values.filter(val=>val.name==username&&val.name==password)之后;然后让我知道您浏览器上控制台上的输出我只尝试了if username匹配它进入if case only我只想看看firebase返回什么,您存储在check变量中。只需将check变量保存的内容粘贴到此处,这样我就可以为您提供正确的解决方案。即使不匹配,它也只会在let check=this.values.filter(val=>val.name==username&&val.name==password)之后重定向到if casept这个代码console.log(check);然后让我知道您浏览器上控制台上的输出我只尝试了if username匹配它进入if case only我只想看看firebase返回什么,您存储在check变量中。只需在这里粘贴什么检查变量保持,这样我就可以为您提供正确的解决方案。