javascript - 在 angular6 中刷新页面时,用户名将为空
问题描述
在我的Dasboard Component
我需要提供username
并发送表单服务器以获取用户的详细信息,例如fName , lName , Image , . . .
我通过username
这种方式:
当用户登录时,我会得到username
来自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”值将被清除。要保留它,请在您的服务构造函数中再次调用您的方法“getUserNameDecode()”。
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);
}
……
推荐阅读
- delphi-7 - Indy 10 中的 IdSNMP 组件是否支持 SNMP 版本 2c?
- django - Django 中默认 self._db 的值是多少?
- magento - 无法安装/更新 Algolia Search
- reactjs - 当他在数据库中使用相同的名字提交时如何返回名字已经存在
- typescript - 如何在 Typescript 中同时使用可选参数和剩余参数?
- html - 当我在 puppeteer 页面中调用 pdf 方法时,图像不加载
- json - 复杂对象多部分 json
- android - Android - Firebase 分析导致失败
- android - 仅房间分页的结果不正确
- javascript - 长文本的语音合成问题在说话中间停顿