我有一个使用 IS4 的站点,前端是 Angular 7。我有 oidc-client 库来处理所有用户身份验证等,一切正常。这是我第一次看到这个问题。我可以登录并很好地进行交互,使用我的权限,角色的东西,这一切都很好。有时我会在一些不活动后得到一个奇怪的错误,所以当我尝试执行安全操作时,我会直接得到一个错误,甚至没有访问我的 API。如果我刷新页面并执行操作,它工作正常。
我已经silent renew callback
在我的组件中实现了,就像这样:
@Component({
selector: 'app-silent-renew-callback',
templateUrl: 'silent-renew-callback.component.html'
})
export class SilentRenewCallbackComponent implements OnInit {
constructor(private authService: AuthService) { }
ngOnInit() {
this.authService.signingSilentCallback();
}
}
然后转到 authService 代码:
signingSilentCallback(): Promise<void> {
return this.manager.signinSilentCallback()
.catch(e => {
console.log(e);
});
}
我的身份验证服务事件配置如下所示:
@Injectable()
export class AuthService {
private manager: UserManager;
private user: User = null;
constructor() {
if (!environment.production) {
Log.logger = console;
}
this.manager = new UserManager(getClientSettings());
this.manager.getUser()
.then(user => {
this.user = user;
});
this.manager.events.addUserSignedOut(() => {
this.signOut();
});
this.manager.events.addAccessTokenExpired(() => {
this.signOut();
});
}
}
export function getClientSettings(): UserManagerSettings {
return {
authority: environment.authorityUrl,
client_id: 'my_client_id',
redirect_uri: `${environment.baseUrl}/auth-callback`,
post_logout_redirect_uri: environment.baseUrl,
response_type: 'id_token token',
scope: 'openid profile my_api',
filterProtocolClaims: true,
loadUserInfo: true,
automaticSilentRenew: true,
silent_redirect_uri: `${environment.baseUrl}/silent-renew-callback`,
};
}
问题是,当您更新用户时,阅读一些帖子看起来应该有一个事件:
this.manager.events.addUserLoaded(_ => {
this.manager.getUser()
.then(user => {
this.user = user;
});
});
我的问题是,当您使用静默续订时是否必须添加它,如果不需要,如果这敲响了你们以前遇到过的任何问题的钟声。
谢谢