javascript - 在 Angular6 中刷新页面时,用户名将为空

标签 javascript angular typescript angular6

在我的Dasboard组件中,我需要提供一个用户名并将其发送 用于获取用户详细信息的表单服务器,例如 fName 、 lName 、 Image 、 . 。 .

我用这种方式传递用户名:

当用户登录时,我从 LocalStorage 获取用户名:

登录组件:

private usenameSource = new BehaviorSubject<string>('');
userName$ = this.usenameSource.asObservable();

getDecodedAccessToken(): any {
  return jwt_decode(this.getRawAuthToken(AuthTokenType.AccessToken));
}

getUserNameDecode():any {
  const decode = this.getDecodedAccessToken();
  let userName = decode["http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"];
  return this.usenameSource.next(userName);
}

仪表板组件:

this.loginService.userName$.subscribe((data) => {
  this.userName = data;
})

现在的问题是,当浏览器刷新时,用户名将为空,我需要重新登录。

有什么问题吗?我该如何解决这个问题?

最佳答案

当页面刷新时,“usenameSource”值将被清除。要保留它,请在服务构造函数中再次调用方法“getUserName Decode()”。

constructor(...) {
    this.getUserNameDecode();
}

getUserNameDecode():any {
   const decode = this.getDecodedAccessToken();

   if(!decode) {
      // login failed
      return;
   }

   let userName = decode["http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"];
   return this.usenameSource.next(userName);
}

...

关于javascript - 在 Angular6 中刷新页面时,用户名将为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54017778/

相关文章:

javascript - 如何向 Javascript 函数提供大量数字数据

javascript - 单击元素后是否可以将字节附加到具有 download 属性的 <a> 元素的 href 处的数据 URI?

javascript - Angular 4 Linkedin 关注按钮不显示

用于多种样式的 Angular ngStyle

javascript - AngularJS 在 ng-model 中获取格式化日期

javascript - 应用程序已在 try/catch 中声明

javascript - 返回带 promise 的函数值

javascript - 通过 systemjs 请求的脚本失败并显示 401 Unauthorized

typescript - 如何在角度6的mat-nav-list中设置事件项目的颜色

html - 如何在 Angular 中将表(数组)索引添加到组件中