0

我有一个 angular2 项目,

我使用 'canActivate' Guard 阻止了一些路由组件

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

但是,我对守卫呼叫的时间有疑问。

当应用程序加载时 - 我调用 AutoLogin 请求(使用令牌登录)。警卫在请求完成之前打电话。

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

请求完成后有什么方法可以打电话给守卫吗?

- - 更新 - -

我的代码结构:

user.service 包括:

  1. 自动登录调用 - 返回 Observable
  2. EventEmitter 用于观察用户发生变化时的变化(登录、注销、更新等)
  3. 获取当前保存用户的函数

app.component 包括:

  1. 自动登录请求的构造函数调用 - 用于在进入站点时加载更新的用户

login.guard 包含:

  1. 检查用户是否现在登录(不仅是否保存了令牌)

我想在自动登录完成app.component中的请求后用户更改后再次检查警卫

4

1 回答 1

0

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

于 2017-03-26T15:32:06.230 回答