Где хранить данные клиента в angular, который впоследствии используется в REST-API для получения информации - PullRequest
2 голосов
/ 01 июня 2019

У меня есть угловое приложение. Всякий раз, когда пользователь входит в систему, я получаю все его данные вместе с jsonwebtoken с сервера через запрос REST-API и сохраняю их в локальном хранилище.

После этого я использую те же пользовательские данные, как email, account_status, id и т. Д., В других вызовах REST-API для получения дополнительной информации. Это явно не правильный способ. Пользователь может изменять свои данные localstorage и легко получать информацию о других пользователях.

Я использую jsonwebtoken для аутентификации, проверки токена в authgaurd service через вызов REST-API.

Может кто-нибудь предложить правильный способ хранения информации с кратким описанием. Могу ли я использовать файлы cookie для этой проблемы?

Ответы [ 2 ]

1 голос
/ 01 июня 2019

Создайте shared service и импортируйте в app module, используйте его во всех компонентах,

import { Injectable } from '@angular/core';
import {Subject} from 'rxjs/Subject';
import {Observable} from 'rxjs/Observable';
import { MyWrapper } from '../models/models';

@Injectable()
export class SharedService{

  data:any={};

  setData(key,value) {
     this.data[key]=value;
  }

  clearData() {
     this.data={};
  }

  getData(key) {
    return this.data[key];
  }

}

Примечание. Это не будет работать точно так же, как локальное хранилище, вы потеряете данные после закрытия браузера или обновления страницы в виде хранилища сеансов, но вы все равно можете размещать и получать данные между компонентами.

Чтобы установить данные,

 sharedService.setData("mydata","mydata");

Чтобы получить данные,

 sharedService.getData("mydata");

Если вы хотите, чтобы данные были постоянными, то альтернативными способами вы можете сохранить данные на сервере и получить данные в ngOnInit или использовать какое-либо шифрование (jsencrypt или cryptojs) при хранении данных в локальном хранилище, так что пользователь не сможет изменить его. Тем не менее это не будет пуленепробиваемым решением. Если вы храните некоторые конфиденциальные данные, я бы порекомендовал вам хранить их на сервере.

0 голосов
/ 01 июня 2019

Если логика вашего приложения сложная, вы можете рассмотреть возможность принятия какой-либо формы управления состоянием на основе архитектуры Flux. Наиболее распространенным и хорошо зарекомендовавшим себя решением для управления состоянием является NgRx Store , и оно очень похоже на Redux, которое может быть знакомо вам, если вы работали с React.js.

...