我已经进行了一次特殊的类验证,以检查用户是否已登录,如果不是,则不应该打开它想要继续的页面。问题是,当我添加行时,我的程序不再将我路由到需要去的组件。
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
答案 0 :(得分:0)
解析器可能对您有所帮助。你还在使用auth进程,这在逻辑上是正确的,但更精确的解决方案就是无缝地进行身份验证:)
https://www.codementor.io/max_diachenko/tutorials/angular-2-route-resolves--typescript-du1089pdm