Попытка понять Wick setResponsePage для отображения iframe - PullRequest
0 голосов
/ 29 декабря 2018

Моя первая страница содержит ссылки на файлы, которые хранятся в базе данных.При нажатии на ссылку открывается моя вторая страница, на которой документ отображается в формате <iframe>.Я попробовал три способа вызова второй страницы.Один способ не работает, а два других не являются безопасными: выход из системы после нажатия кнопки «Назад» снова открывает страницу.

Файлы из базы данных копируются в папку MyProject / web / в папкесервер.Атрибут <iframe src=...> заменяется на путь к файлу переопределенным InlineFrame#onComponentTag(ComponentTag tag).

Метод 1 не может найти файл.Я бы предпочел использовать этот метод, так как он наиболее безопасный.Первая страница

setResponsePage(DisplayResourcePage.class, params);

Вторая страница должна получить файл из базы данных.

DisplayResourcePage(PageParameters parameters) {..}

Некоторая диагностика.Браузер показывает ошибку 404 File Not Found.Я не уверен, где он ищет файл.src будет заменено.Может ли быть так, что начальный src по-прежнему влияет на место, откуда ожидается чтение файла?

realPath: C:\Users\joe\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\MyProject
src before ./com.mycompany.shared.DisplayResourcePage?4-1.ILinkListener-pdfframe

Метод 2 находит файл, но не является безопасным.Первая страница

setResponsePage(new DisplayResourcePage(params));

Вторая страница получает файл из базы данных, используя тот же конструктор.

DisplayResourcePage(PageParameters parameters) {..}

Некоторая диагностика.src является начальным атрибутом <iframe src=...>.Во всех случаях он заменяется путем к файлу.

realPath: C:\Users\joe\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\MyProject
src before ./page?7-1.ILinkListener-pdfframe

Метод 3 находит файл, но не является безопасным.Первая страница

setResponsePage(new DisplayResourcePage(item.getModelObject()));

Вторая страница получает файл из базы данных, используя другой конструктор.

public DisplayResourcePage(EntityOtherResourceModel resourceModelItem) {..}

Диагностика такая же, как и в методе 2.

1 Ответ

0 голосов
/ 29 декабря 2018

MyPage (AnyObject) обычно более безопасен, чем MyPage (PageParameters), потому что он создает URL-адрес без закладок.

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

Другой вариант может заключаться в том, что страница сохраняется в кеше браузера, поэтому она загружается после выхода из системы, но по умолчанию Wicket устанавливает для страниц прагму «no-store».

...