Почему моя страница входа отображается в виде текста во всплывающем окне, а не в формате HTML - PullRequest
0 голосов
/ 15 февраля 2012

Я использую GWT с Spring security для управления входом пользователя. Почему я получаю всплывающее окно с HTML-содержимым моей страницы входа в виде текста вместо того, чтобы быть перенаправленным на мою правильно отформатированную страницу входа, когда сеанс заканчивается, и я пытаюсь что-то сделать в своем приложении ???

Я основал свою реализацию на этом посте . Моя конфигурация выглядит так:

    <security:http>
    <security:intercept-url pattern="/login.jsp" filters="none" />
    <security:intercept-url pattern="/styles/images/**" filters="none" />
    <security:intercept-url pattern="/styles/*/images/**" filters="none" />
    <security:intercept-url pattern="/styles/*/*.css" filters="none" />
    <security:intercept-url pattern="/styles/*.css" filters="none" />
    <security:intercept-url pattern="/**"
        access="ROLE_USER" />
    <security:form-login
        login-page="/login.jsp"
        default-target-url='/my-app.html' always-use-default-target="true" />
    <security:logout logout-success-url="/login.jsp" />
    <security:form-login authentication-failure-url="/login.jsp" default-target-url="/login.jsp"/>

</security:http>

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2012

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

Вся проблема была связана с тем, как я обрабатывал InvocationException, который выдается, когда пользователь пытается выполнить действие, которое блокируется системой безопасности Spring (например, из-за тайм-аута сеанса).

Я показывал всплывающее окно, используя Window.alert («Объяснение пользователю, подробности» + e.getMessage ()), где message - это сообщение, полученное от Exception, поступающего с сервера. Это работает нормально, если сервер действительно отправил исключение, но в случае, когда Spring пытается перенаправить пользователя на страницу входа в систему, кажется, что отображается сама страница JSP !!! Я создал свое собственное всплывающее окно (используя DialogBox GWT), и теперь проблема решена.

Извлеченный урок: не используйте Window.alert () ни для чего, кроме отладки!

0 голосов
/ 15 февраля 2012

Исходя из того, что вы пишете, я предполагаю, что у вас есть поле HTML, в котором вы используете что-то вроде этого:

final HTML html= new HTML(text);
//or    
final HTML html= new HTML();
html.add(text);

, где текст является вашим отформатированным html (что-то вроде этого <h1>username:</h1>...),Теперь проблема в том, что вы получаете именно то, что <h1>username:</h1>..., а не то, что вы ожидаете, имя пользователя: отформатировано как h1 и т. Д.

Это потому, что класс HTML автоматически экранирует текст, который вы поместилив него "SafeHTML" текст.(см. Руководство разработчика - SafeHtml )

Чтобы выводить форматированный HTML-файл в реальном времени, вы должны создать один класс SafeHTML.Вот простой пример:

SafeHtml safeHtml = new SafeHtml() {

            @Override
            public String asString() {
                return "<h1>Username</h1>";
            }
        };

Однако вы должны прочитать Руководство разработчика - SafeHtml !

Надеюсь, что это ваша проблема ^^

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...