0

我正在尝试使用带有隐式流的 iFrame 进行静默刷新。我不想使用automaticSilentRenew,因为它效率不高。我在客户端使用Angular 8 中的oidc-client库。所以,有两件事正在发生:

1.)我正在使用 auth-guard 来保护重要组件。在 auth-guard 中,我正在检查令牌是否有效,如果不是,那么我将调用auth-service 类的signinRedirect来获取新令牌。

2.) 我没有使用 auth-guard 保护安全 API 调用组件,因此我可以获得无效令牌的401 未授权错误。但是如果我用 auth-guard 保护它,它会在获取新的令牌集并且原始请求丢失后将我路由到 auth-callback。

我想以某种方式自动化这个过程。就像,使用 auth-guard 保护 API 调用组件,当我尝试使用过期令牌访问 API 时,auth-guard 开始发挥作用,在后台使用有效令牌更新当前请求,以提供无缝的用户体验.

export class AuthService {

private manager = new UserManager(getClientSettings());
private user: User = null;


constructor() {
this.manager.getUser().then(user => {
  this.user = user;
});

this.manager.events.addAccessTokenExpiring(async function(){
  await this.manager.signinSilent().then(user => {   
      });  
});
}}

我试图在我的 auth-service 类的构造函数中捕获addAccessTokenExpiring事件并调用signinSilent来获取新的 access_token。该事件确实在令牌到期之前开始,但我在此事件中未定义this.manager 。

请分享您的宝贵意见以实现这一目标。任何现有的例子都将是非常可观的。

感谢您!

塔伦·奥里

4

1 回答 1

0

我的偏好是遵循类似的方法,但不依赖客户端令牌到期,允许发生 401,然后刷新令牌并使用新令牌重试 API 请求。

如果有帮助,这里有 2 个关键类:

于 2020-02-28T19:05:36.233 回答