Angular2 Guard在请求完成之前调用

时间:2017-03-26 14:15:42

标签: angular angular-ui-router canactivate

我有一个angular2项目,

我使用&can; canActivate'阻止了一些路线组件。后卫

例如:警卫检查用户是否已登录并仅阻止注册用户的组件。

但是,我在看守时间方面遇到了问题。

当app加载时 - 我调用AutoLogin请求(使用令牌登录)。 在请求结束之前,警卫打来电话。

因此,如果用户使用guard刷新页面,则保护会在请求完成之前阻止页面。

请求结束后有没有办法打电话给警卫?

---- ---- UPDATE

我的代码结构:

user.service包括:

  1. 自动登录 - 返回Observable
  2. EventEmitter用于在发生更改(登录,注销,更新等)时观察用户更改
  3. 获取当前保存用户的功能
  4. app.component包括:

    1. 构造函数调用自动登录请求 - 在进入网站时加载更新的用户
    2. loggedin.guard包含:

      1. 检查用户是否立即登录(不仅仅是保存了令牌)
      2. 我希望在自动登录完成app.component中的请求后用户更改后再次检查警卫

1 个答案:

答案 0 :(得分:0)

警卫应该在用户不是匿名的页面上,所以在登录页面上不应该有警卫 Guard将在canActivate页面循环中触发,它将检查用户是否存在,如果是,则返回true,否则返回false。
当用户不存在时,您可以检查会话令牌(保存在浏览器/ cookie上)是否存在,如果是,则调用authenticate方法。