Как использовать ng2-file-upload с авторизацией токена разработки?

В настоящее время я пытаюсь использовать загрузку файла ng2 вместе с авторизацией токена разработки.: https://devise-token-auth.gitbook.io/devise-token-auth/conceptual. Загрузчик файлов в настоящее время обрабатывает HTTP-запрос напрямую, и поэтому я не использовал класс службы API для хранения токенов angular для загрузки объектов: https://angular-token.gitbook.io/docs/session-management. Вместо этого мне пришлось вручную установить заголовки в соответствии с токеном авторизации.

URL = '/api/my_api'
public uploader: FileUploader = new FileUploader({ url: URL});
update_upload_parameters(){
  var uo: FileUploaderOptions = {};
  uo.headers = 
  [
   {name: 'access-token', value : localStorage.getItem("accessToken")}, 
   {name: 'client', value : localStorage.getItem("client")},
   {name: 'expiry', value : localStorage.getItem("expiry")},
   {name: 'token-type', value : localStorage.getItem("tokenType")},
   {name: 'uid', value : localStorage.getItem("uid")}
  ];
  this.uploader.setOptions(uo);

}

HTML-файл

<input id="file2" type="file" ng2FileSelect [uploader]="uploader" />

Сама загрузка проходит успешно, но после загрузки я вижу, что токен доступа в сеансе больше не работает. Я предполагаю, что это связано с тем, что я использую аутентификацию токена разработки, которая обновляет токен по запросу, и я не устанавливаю его в свое локальное хранилище. Как я могу получить и установить токен из заголовка ответа вручную в локальное хранилище браузера? (в противном случае обрабатывается угловым токеном в обычных запросах)


person Venomoustoad    schedule 02.09.2019    source источник


Ответы (1)


Прикинул, работает:

this.uploader.onCompleteItem = (item:any, response:any, status:any, headers:any)=> {
        localStorage.setItem('accessToken', headers['access-token']);
        localStorage.setItem("expiry", headers['expiry']);
    };
}
person Venomoustoad    schedule 02.09.2019