使用Angular 2 Meteor登录逻辑?

时间:2017-01-27 22:29:07

标签: angular meteor login angular-meteor angular2-meteor

我想实现典型的登录/注册设置:

  • 如果用户未登录,则阻止用户访问/ app和/ app的所有子项
  • 如果用户已登录
  • ,则阻止他们访问/登录和/注册

现在,我正在使用看起来像这样的设置:

@Injectable()
export class LoggedInGuard implements CanActivate, CanActivateChild {
    canActivate(...): boolean {
        if (Meteor.userId() != null) {
            return true;
        }
        this.router.navigate(['/login']);
        return false;
    }
    canActivateChild(...): boolean {
        return this.canActivate(childRoute, state);
    }
}

我放入了我的路线,我放了{path: 'app', component: TasksListComponent, canActivate: [LoggedInGuard]}。但是,这并不会阻止用户在登录时访问登录/注册页面。我想知道是否有更好的方法来执行此操作,而无需创建另一个单独的Injectable。

**注意 - 我没有使用Iron Router,我正在使用@ angular / router

1 个答案:

答案 0 :(得分:2)

如果用户登录,您可以将用户重定向到其他组件。把它放在第一个ngOnInit()。

 ngOnInit() {
 //*** checking if user is already login if login redirect to someother page based on your custom condition
        if (Meteor.userId()) {
            this._router.navigate(['otherpage']);
        }

    }