2016-11-30 86 views
2

之前,我做了一类特殊的验证,以检查用户是否如果不是它不应该打开它想要去的页面登录。问题是当我添加行我的程序不会再发送给需要去的组件。登录验证需要去实际登录

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 

回答