0

我正在使用ngrx/router

我有一个LoginGuard,当我打开一个需要登录的页面时,LoginGuard 运行之前isSignedIn设置为 true。所以当时isSignedInundefined

@Injectable()
export class LoginGuard implements Guard {
  constructor(private _router: Router, private _userService: UserService) { }

  protectRoute({ route, params, isTerminal }: TraversalCandidate): Observable<boolean> {
    return this._userService.checkSignedIn()
      .map(isSignedIn => {
        if (!isSignedIn) {
          this._router.replace('/landing');
          return false;
        } else {
          return true;
        }
      }).first();
  }
}

我在应用程序的开头设置isSignedIntrue,这是我脑海中最早的地方。

class App implements OnInit {
  ngOnInit() {
    // I set isSignedIn in UserService to true here after I got user info from the server
  }
}

但也许还不够早?那么如何在Guard运行之前设置isSignedIn呢?谢谢true

4

1 回答 1

0

我的应用程序实际上以异步方式使用服务检查访问。

@rtytgat 提供了一个解决方案。谢谢!

与警卫联系,如果未登录,请将其发送到“登录”页面,并在确认登录后将其返回。

于 2016-06-03T22:29:48.303 回答