我正在使用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并未对其进行处理,因此如果存在“代码”查询字符串,我必须在构造函数中再次调用login方法。
我怀疑我做错了,因为我期望angular-oauth2-oidc会自动处理代码。
我在这里想念东西吗?