Почему моя аутентификация jsreport не работает? - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь https://jsreport.net/learn/authentication:

....
  "extensions": {
    "authentication": {
      "cookieSession": {
        "secret": "<your strong secret here>"
      },
      "admin": {
        "username": "admin",
        "password": "password"
      },
      "enabled": true
    },
......

Я также прочитал следующее:

Вам нужно добавлять заголовок к каждому запросу, когда это расширение включено.

Авторизация: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ ==

Где хэш основан на имени пользователя и пароле: base64 (имя пользователя: пароль)

Я пытался использовать QWxhZGRpbjpvcGVuIHNlc2FtZQ== и https://www.motobit.com/util/base64-decoder-encoder.asp для кодирования: admin:password, в результате: YWRtaW46cGFzc3dvcmQ=. Который при попытке их обоих не позволяет мне получить доступ к моему API.

(обратите внимание, что ключ в следующем был одним из перечисленных выше)

Я пытался разместить интерфейсный вызов API jsreport: return this.http.post(this.hosturl, parameter, { headers: 'Content-Type': 'application/json', 'Authorization': 'Basic ' + this.key }, responseType: 'blob' });

Я также попытался поместить на серверную часть для вызова jsreport API:

 var data = {
        headers: {
            "Authorization" : "Basic key" 
        },
        template: { "shortid": shortid },
        options: {
            preview: preview
        }
    }

Есть идеи, почему он всегда возвращает неавторизованный пользовательский интерфейс (угловой) и запрашивает вход в систему на серверном (экспресс)?

PS: в приглашении backend-API имя пользователя: admin и пароль: пароль по какой-то причине не работает.

Мне удалось войти в систему только из студии jsreport, используя имя пользователя: admin и пароль: пароль.

Любая идея приветствуется.

1 Ответ

0 голосов
/ 19 июля 2019

Причина, по которой он всегда возвращается неавторизованным на входной стороне (угловой), и запрос на вход на серверной части (экспресс) был ошибочная реализация .

Как мне удалось ее решить:

Для интерфейса:

объявление переменной после constructor(){}:

key = 'YWRtaW46cGFzc3dvcmQ='; header = { 'Content-Type': 'application/json', 'Authorization': 'Basic ' + this.key };

По телефону службы поддержки:

return this.http.post(this.hosturl, parameter, { headers: this.header, responseType: 'blob' });

Для внутренней стороны:

var options = {
        uri: 'http://localhost:5488/api/report',
        auth: { user: 'admin', password: 'password'}, 
        method: 'POST',
        json: data
    }
...