我正在使用 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 会自动处理代码。
我在这里错过了什么吗?