Проверка подлинности на основе токенов в отчетах Jasper не удалась при использовании с visualize.js

Я использую Jasper 6.1 и настроил свой сервер для аутентификации на основе токенов. Он отлично работает, когда я использую токен для входа из браузера. С действующим токеном я могу войти в систему без ввода имени пользователя и пароля.

Теперь я интегрирую его с visualize.js, чтобы показывать отчеты на веб-странице нашего приложения. Ниже просьба позвонить:-

var authToken = encodeURIComponent("u=jsmith|r=admin|exp=20150831172506-0800|t=ABC");
visualize.config({
server: "http://localhost:8080/jasperserver-pro",
scripts: "optimized-scripts",
logEnabled: true,
logLevel: "error",
auth: {
token: authToken,
preAuth: true,
tokenName: "pp"
}}, function (v) {
   $scope.v = v;
   $scope.reportingInitialized = true;
   $scope.$digest();
}, function (err) {
         alert("Auth error! Server said: " + err.message);
});

Однако при успешной аутентификации он не перенаправляет на URL-адрес успеха, а возвращает приведенный ниже HTML-код с HTTP-кодом 200. Из-за этого происходит сбой аутентификации с сообщением об ошибке "Неожиданный токен <".

Ценю любую помощь по этому вопросу.

<head>
<title></title>
<meta http-equiv="refresh" content="0;url=home.html">
<script language="javascript" type="text/javascript">
window.location="home.html";
</script>
</head>
<body>
If your browser doesn't automatically go there,
you may want to go to <a href="home.html">the destination</a>
manually.
</body>
</html>

4 ответа

Решение

Вот решение для этой проблемы в интересах других:

JsonRedirectUrl отсутствовал в applicationContext-externalAuth-preAuth.xml

<property name="jsonRedirectUrl" ref="authSuccessJsonRedirectUrl"/>

Также следующие строки должны быть удалены из этого файла, чтобы отчет отображался без ошибок:

 <!-- marker disabling JIAuthenticationSynchronizer: pre-5.1 external auth config-->
    <alias name="${bean.authenticationProcessingFilter}" alias="proxyAuthenticationProcessingFilter"/>

Выше решение протестировано и работает на Jasper Server 6.1

Это ожидаемое поведение при аутентификации visualize.js, так что здесь есть 2 варианта, которые я могу использовать в своем приложении

Подход 1

Повторный вызов аутентификации в соответствии с документацией visualize.js

использовать visualize.configure

visualize.config({
  auth: {
    token: "token",
    organization: "organization_1"
  }
});

затем используйте функцию визуализации для предоставления отчета 1 и отчета 2

// report 1
visualize(function(v) {
  v("#container1").report({
    resource: "/public/Samples/Reports/06g.ProfitDetailReport",
    error: function(err) {
      alert(err.message);
    }
  });
});

// report 2
visualize(function(v) {
  v("#container2").report({
    resource: "/public/Samples/Reports/State_Performance",
    error: function(err) {
      alert(err.message);
    }
  });
});

Подход 2

Такой подход, который не желателен. каждый раз, когда вы хотите показать отчет, делайте следующее

  • отправить логин
  • обслуживать отчет
  • отправить вызов выхода

Мы обнаружили, что проблема заключалась в том, что первый запрос устанавливает сеанс. Если вы отправите новый токен со вторым запросом, когда первый сеанс еще активен, запрос завершится неудачно. Вам необходимо изменить свое приложение, чтобы либо продолжать использовать тот же токен для сеанса браузера, либо вы можете выйти из системы перед отправкой второго запроса.

Я установил JRS 6.1 и:

  • Уже был в приложении Context-externalAuth-preAuth.xml

  • И я прокомментировал строку "псевдоним..."

Но, тем не менее, когда я обновляю свою страницу отчета, отчет не отображается. Я должен удалить свои куки, чтобы появился отчет.

Это действительно работает для вас?

Другие вопросы по тегам