Auth0问题。
我的应用程序在注销浏览器刷新后重新触发登录事件,并且用户配置文件出现问题。我在身份验证服务中将其跟踪到parseHash:
this.auth0.parseHash({ hash: window.location.hash }, (err, authResult) => {
...
}
使用ngrx效果触发:
@Effect()
init$ = defer(() => {
const userData = localStorage.getItem("user");
if (userData != null && userData != 'undefined') {
let authActionObservable = of(new Login({user: JSON.parse(userData)}));
this.authService.handleAuthentication();
return authActionObservable;
}
this.authService.handleAuthentication();
});
页面刷新后,this.auth0.parseHash似乎为authResult和err返回null,但在初始登录时authResult已正确填充。
从技术上讲,登录成功,并且我得到了令牌。我检查了整个配置,域等,一切似乎都很好。我还尝试使用{hash:window.location.hash}。
答案 0 :(得分:1)
我经常看到捕获到的HAR文件可以帮助您准确缩小注销工作流程期间发生的情况。我可能不建议您看几件事。
现在,在这里发生的事情的核心我可能是错的,但是袖手旁观是一个很好的基本起点。谢谢!
答案 1 :(得分:1)
问题在于,每次刷新页面时,都会重置包含服务令牌的内存变量的状态。一旦我在服务的构造函数中重新初始化了值,问题就消失了。
这里是我说的localStorage示例:
constructor(public router: Router, private store: Store<State>, private http: HttpClient) {
this._idToken = localStorage.getItem("Auth0IdToken");
this._accessToken = localStorage.getItem("Auth0AccessToken");
this._expiresAt = parseInt(localStorage.getItem("Auth0ExpiresAt"));
}