Angular 6在路由开始之前调用后端api

问题描述 投票:-1回答:2

我有一个角度6应用程序。新用户需要先进行快速设置才能使用该应用程序。

我正在使用后端api来检查用户状态,并查看用户是否已完成初始设置。

我在AppComponent::ngOnInitLoginConponent::ngOnInit中称这个api,如果用户访问/或其未经授权,这可以正常工作,因为在外部登录后用户将被重定向到/login

但是,如果用户在登录后但在完成初始设置之前手动输入网址(如/profile),则用户将被重定向到/profile页面,并在后端api检查其状态并将其重定向到/quick-setup页面。

有没有办法在应用程序启动时自动停止角度路由?所以我可以手动完成吗?

我不需要也不想在每次路线更改时检查这个,只是在app开始!

我可以以某种方式使用Resolve吗?

我已经有AuthGuard来检查身份验证状态但是这将在每次路线更改时检查,这不是我想要的

angular routing angular-router
2个回答
0
投票

好的,这就是我做的工作。

首先在app.component

  ngOnInit(): void {    
    //always go to login page to authenticate and then redirect to the requested url
    this.authService.navigateToLogin();
  }
  navigateToLogin() {
    if (!Util.checkUrl('/logout') && !Util.checkUrl('/signup'))
      this.router.navigate(['/login'], { skipLocationChange: true });
  }

login.component中,将location.pathname存储在cookie中,以便我可以在登录后重定向到它

  ngOnInit() {
    if (!Util.checkUrl('/login') && !Util.checkUrl('/', true) && !Util.checkUrl('/#')) {
      this.cookieService.set(COOKIE_LOGIN_REDIRECT, location.pathname, 3600, '/');
    }

    this.authService.verify();
  }

this.authService.verify();检查后端以查看用户是否正常,然后重定向到存储在cookie中的位置。

    let redirect = this.cookieService.get(COOKIE_LOGIN_REDIRECT);
    if (redirect) {
      this.cookieService.delete(COOKIE_LOGIN_REDIRECT, '/');
      redirect = redirect.replace(environment.baseHref, '');
      return this.router.navigateByUrl(redirect);
    }
© www.soinside.com 2019 - 2024. All rights reserved.