我正在使用angular 8,我想存储当前用户!我认为每次要获取当前用户时都调用api是不切实际的,并且将其保存在本地存储中也不安全! 有帮助吗?
答案 0 :(得分:2)
这是存储currentUser的选项之一,希望对您有所帮助。
基本上,您需要将当前用户存储在localStorage或sessionStorage中。
例如:
this.http.get<any>('${this.endpointURL}/currentUser}).subscribe(res=>{
// If you want to store token
localStorage.setItem('current_user', res.authentication_token )
// If you want to store complete user object
localStorage.setItem('current_user', JSON.stringify(res.user) )
})
就是这样。编码愉快。
答案 1 :(得分:0)
将其缓存在服务中,例如
@Injectable()
export class UserService {
user: User;
getCurrentUser = (): Observable<User> =>
this.user ?
of(this.user) :
this.http.get<User>(`${this.endpoint}/loggedinuser`)
.pipe(tap(u => {
this.user = u;
}))
编辑:@ AJT82在注释中使用share()运算符的解决方案可能更干净,更好。但是,将其存储在变量中具有其优点,注销起来更容易(只需执行this.user = null),并且可以像访问User属性一样方便地访问用户,而不是可以观察到。