我有一个使用IS4的站点,前端是Angular7。我有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;
});
});
我的问题是,在您使用无提示续订时是否必须添加该强制性功能;如果不需要,是否在您之前遇到过任何问题的钟声中添加该功能。
谢谢