问题描述
我在带有 Identity Server 4 的 Angular 10 应用中使用 npm 包 oidc-client
。
我发现当我在浏览器中重新加载网页时,它总是重定向到主页并且不记得当前的角度路线。
我发现这是因为当页面重新加载时,UserManager
尝试刷新用户对象,但这是异步完成的,因此 AuthGuard
看到 null
{1}} 因为它还没有加载。
这能解决吗。怎么样?
user
将 @Injectable({
providedIn: 'root'
})
export class AuthService {
private manager = new UserManager(getClientSettings(this.appSettingsService));
private user: User | null;
constructor(private appSettingsService: AppSettingsService) {
// This should wait until the user has acually loaded. Doing async just makes everything break.
this.manager.getUser().then(user => {
this.user = user;
});
}
login() {
return this.manager.signinRedirect();
}
async completeAuthentication() {
this.user = await this.manager.signinRedirectCallback();
}
isAuthenticated(): boolean {
// This needs to be made to wait until the user has loaded.
return this.user != null && !this.user.expired;
}
更改为 isAuthenticated(): boolean
似乎是不可能的,因为在 isAuthenticated(): Observable<boolean>
中需要它,其中 AuthGuard
必须返回 canActivate
而不是 {{1} }
所以有必要去掉 boolean
。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)