3 回答
TA贡献1828条经验 获得超13个赞
很少尝试
将您的 response_type 更改为此
response_type: 'id_token token'
并删除用户中的空值
private user: User;
并删除这些 2
response_mode
@Injectable({
providedIn: 'root'
})
TA贡献1803条经验 获得超6个赞
将isSignedIn方法更改为基于承诺。
isSignedIn(): Promise<boolean> {
return new Promise((resolve, reject) => {
this.manager.getUser().then(user => {
resolve(user != null && !user.expired);
});
});
}
还有你的路线守卫:
canActivate(): Promise<boolean> {
return new Promise((resolve, reject) => {
this.authService.isLoggedIn().then(result => {
if (result) {
resolve(result);
} else {
this.authService.startAuthentication().finally(() => {
reject(false);
});
}
});
});
}
TA贡献1816条经验 获得超6个赞
2件事要检查:
首先,打开浏览器的控制台,看看是否
signinRedirectCallback() call
抛出任何错误。其次,查看应用程序的会话存储,您是否看到身份验证流填充的任何用户数据?
另一个观察:你不应该UserManager
为每个页面创建实例;oauth with 的所有逻辑oidc-client
都应该封装在一个服务中,该服务将被注入到应用程序的不同页面中。
添加回答
举报