安全地存储当前用户

时间:2019-10-30 09:48:35

标签: angular authentication storage

我正在使用angular 8,我想存储当前用户!我认为每次要获取当前用户时都调用api是不切实际的,并且将其保存在本地存储中也不安全! 有帮助吗?

2 个答案:

答案 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属性一样方便地访问用户,而不是可以观察到。