2

我正在使用 angular-oauth2-oidc 在 angular 10 应用程序中实现授权代码流。主要思想很简单,我只有一个带有按钮的应用程序组件。当用户单击它时,他必须被重定向到身份验证提供程序登录页面,并在成功登录后返回应用程序。

身份验证由以下服务处理:

export class AuthenticationService {
  private authCodeFlowConfig: AuthConfig = {
    issuer: ...
  };

  constructor(public oauthService: OAuthService) {
    this.oauthService.configure(this.authCodeFlowConfig);

    if (location.href.indexOf('?code') > 0) {
      this.oauthService.loadDiscoveryDocumentAndLogin();
    }
  }

  async login(): Promise<void> {
    await this.oauthService.loadDiscoveryDocumentAndLogin();
  }
}

这可行,但我对构造函数中的 URL 检查有点困扰。但是,如果我不这样做,一旦成功登录,用户就会被正确地重定向到登录页面并返回应用程序,但他会卡在代码流的中间。实际上,授权代码存在于 URL 中,但是 angular-oauth2-oidc 没有处理它,这就是为什么如果“代码”查询字符串存在,我必须再次调用构造函数中的登录方法。

我怀疑我做错了什么,因为我期望 angular-oauth2-oidc 会自动处理代码。

我在这里错过了什么吗?

4

0 回答 0