登录验证需要在实际登录之前进行

时间:2016-11-30 09:57:45

标签: angular typescript firebase firebase-authentication

我已经进行了一次特殊的类验证,以检查用户是否已登录,如果不是,则不应该打开它想要继续的页面。问题是,当我添加行时,我的程序不再将我路由到需要去的组件。

Validation.ts

export class validation {
 user = {};

  loggedinvalidation(user) {
    if (user) {
      this.user = user;
      console.log("test login");
      return true
    } else {
      this.user = {};
      console.log("test logout");
      return false
    }
  }
}

app.component.ts

 export class AppComponent {


...

    login(email:any, password:any) {
        this.af.auth.login({ email: email, password: password }, {
          provider: AuthProviders.Password,
          method: AuthMethods.Password
        });
        this.modal.close();
        this.router.navigate(['dashboard']);
      }
    }

dashboard.component.ts

export class DashboardComponent {

constructor(public af: AngularFire,  public router: Router) {
    this.vali = new validation();
    this.af.auth.subscribe(user => {
      if (this.vali.loggedinvalidation(user)) {

        this.af.auth.subscribe(auth => {
...

});
      }
      else {
        this.router.navigate(['/']);
      }
    });


  }
}

当我运行程序&从/'开始它工作正常,但当我尝试登录时,它在我的控制台中给我这个。问题是它首先给我一个测试注销,这就是它没有路由到仪表板的原因。任何想法,我如何更快地获得验证或登录实际发生?

test logout
test login

1 个答案:

答案 0 :(得分:0)

解析器可能对您有所帮助。你还在使用auth进程,这在逻辑上是正确的,但更精确的解决方案就是无缝地进行身份验证:)

https://www.codementor.io/max_diachenko/tutorials/angular-2-route-resolves--typescript-du1089pdm