首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开始路由前,Angular 6调用后台api

开始路由前,Angular 6调用后台api
EN

Stack Overflow用户
提问于 2019-01-24 18:29:16
回答 1查看 465关注 0票数 0

我有一个angular 6 application.New用户需要进行快速设置才能使用该应用程序。

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

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

但是,如果用户在登录之后手动输入url,但在完成初始设置之前,用户将被重定向到/profile页面,并在后端api检查其状态并最终重定向到/quick-setup页面时看到该页面一秒钟。

有没有办法阻止angular在应用启动时自动路由?这样我就可以手动完成了?

我不需要也不想在每次路线改变时检查这个,只是在应用程序开始的时候!

我能以某种方式使用Resolve来做这件事吗?

我已经有了AuthGuard来检查身份验证状态,但每次路由更改时都会检查它,这不是我想要的

EN

回答 1

Stack Overflow用户

发布于 2019-02-16 19:25:44

好的,下面是我为实现这个功能所做的工作。

First in app.component

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

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

代码语言:javascript
复制
  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中存储的位置。

代码语言:javascript
复制
    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);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54344456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档