Angular 在存储中找不到ng oidc客户端用户

Angular 在存储中找不到ng oidc客户端用户,angular,openid-connect,Angular,Openid Connect,我已更新了所有角度相关性,包括ng oidc client(~2.0.3)和oidc client(^1.10.1),但更新后,我无法登录到我的应用程序,因为存在无限重定向 在控制台中,我收到以下错误: UserManager.getUser: user not found in storage UserManager.signinRedirectCallback: successful, signed in sub: auth0|auth0|5cac7184cf805a119895edc6

我已更新了所有角度相关性,包括ng oidc client(~2.0.3)和oidc client(^1.10.1),但更新后,我无法登录到我的应用程序,因为存在无限重定向

在控制台中,我收到以下错误:

UserManager.getUser: user not found in storage
UserManager.signinRedirectCallback: successful, signed in sub:  auth0|auth0|5cac7184cf805a119895edc6
我找不到一个原因,为什么这是不工作后更新了

我还将静态HTML页面替换为文档中的最新页面:

oidc登录重定向callback.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Callback</title>
    <link rel="icon" type="image/x-icon" href="favicon.png" />
    <script src="oidc-client.min.js" type="application/javascript"></script>
  </head>

  <body>
    <script>
      var Oidc = window.Oidc;

      var config = {
        userStore: new Oidc.WebStorageStateStore({ store: window.localStorage }),
      };

      if (Oidc && Oidc.Log && Oidc.Log.logger) {
        Oidc.Log.logger = console;
      }
      var isPopupCallback = JSON.parse(window.localStorage.getItem('ngoidc:isPopupCallback'));

      if (isPopupCallback) {
        new Oidc.UserManager(config).signinPopupCallback();
      } else {
        new Oidc.UserManager(config).signinRedirectCallback().then((t) => {
          window.location.href = '/';
        });
      }
    </script>
  </body>
</html>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Renew Callback</title>
    <link rel="icon" type="image/x-icon" href="favicon.png" />
  </head>

  <body>
    <script src="oidc-client.min.js"></script>
    <script>
      var config = {
        userStore: new Oidc.WebStorageStateStore({ store: window.localStorage }),
      };
      new Oidc.UserManager(config).signinSilentCallback().catch(function (e) {
        console.error(e);
      });
    </script>
  </body>
</html>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Signout Callback</title>
    <link rel="icon" type="image/x-icon" href="favicon.png" />
    <script src="oidc-client.min.js" type="application/javascript"></script>
  </head>

  <body>
    <script>
      var Oidc = window.Oidc;

      var config = {
        userStore: new Oidc.WebStorageStateStore({ store: window.localStorage }),
      };

      if (Oidc && Oidc.Log && Oidc.Log.logger) {
        Oidc.Log.logger = console;
      }

      var isPopupCallback = JSON.parse(window.localStorage.getItem('ngoidc:isPopupCallback'));

      if (isPopupCallback) {
        new Oidc.UserManager(config).signoutPopupCallback();
      } else {
        new Oidc.UserManager(config).signoutRedirectCallback().then((test) => {
          window.location.href = '/';
        });
      }
    </script>
  </body>
</html>
我也在使用和以前一样的拦截器:

intercept(
    req: HttpRequest<any>,
    next: HttpHandler
  ): Observable<HttpEvent<any>> {
    return this.authService.identity$.pipe(
      take(1),
      switchMap(user => {
        if (user && !user.expired && user.access_token) {
          req = req.clone({
            setHeaders: {
              Authorization: `Bearer ${user.access_token}`,
            },
          });
        } else {
          this.authService.signinRedirect();
        }
        return next.handle(req);
      })
    );
  }
}
拦截(
请求:HttpRequest,
下一步:HttpHandler
):可见{
返回此.authService.identity$.pipe(
以(1)为例,
开关映射(用户=>{
if(user&&!user.expired&&user.access\u令牌){
req=req.clone({
集合标题:{
授权:`Bearer${user.access\u token}`,
},
});
}否则{
this.authService.SignInDirect();
}
返回next.handle(req);
})
);
}
}
同样的守卫:

@Injectable()
export class CanActivateAuthGuard implements CanActivate {
  constructor(private authService: AuthService) {}

  public canActivate(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  ): Observable<boolean> | boolean {
    return this.authService.loggedIn$.pipe(take(1));
  }
}
@Injectable()
导出类CanActivateAuthGuard实现CanActivate{
构造函数(私有authService:authService){}
公共活动(
路由:ActivatedRouteSnapshot,
状态:RouterStateSnapshot
):可观察的|布尔值{
返回这个.authService.loggedIn$.pipe(取(1));
}
}

我应该怎么做才能修复UserManager.getUser错误并删除无限重定向到oidc logout redirect callback.html

在应用程序中在哪里调用getUser?在哪里可以解决这个问题?我使用了
userStore:(()=>新的WebStorageStateStore({store:window.localStorage}))如有
并将
oidc客户端降级为^1.8.2
@Injectable()
export class CanActivateAuthGuard implements CanActivate {
  constructor(private authService: AuthService) {}

  public canActivate(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  ): Observable<boolean> | boolean {
    return this.authService.loggedIn$.pipe(take(1));
  }
}