Сохранить текущего пользователя безопасно - PullRequest
0 голосов
/ 30 октября 2019

Я использую Angular 8, и я хочу сохранить моего текущего пользователя! Я думаю, что вообще не практично вызывать API каждый раз, когда я хочу получить текущего пользователя, и небезопасно сохранять его в локальном хранилище! Любая помощь?

Ответы [ 2 ]

1 голос
/ 30 октября 2019

Это один из вариантов сохранения 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) )
})

Вот и все. Счастливого кодирования.

0 голосов
/ 30 октября 2019

кэшируйте его в службе, например,

@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 вместо наблюдаемого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...