为什么我的登录页面在弹出窗口中显示为文本而不是格式化HTML

时间:2012-02-15 04:24:29

标签: gwt spring-security

我正在使用带有Spring安全性的GWT来管理用户登录。 为什么我得到一个弹出窗口,其中我的登录页面的HTML内容为文本,而不是在会话到期时指向我格式正确的登录页面,我尝试在我的应用程序中执行某些操作???

我的实施基于this post。 我的配置如下所示:

    <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 :(得分:0)

根据您所写的内容,我假设您有一个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”文本转义。 (见Developer's Guide - SafeHtml

要以规范方式输出格式化的html,您必须创建一个SafeHTML类。这是一个简单的例子:

SafeHtml safeHtml = new SafeHtml() {

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

但是你应该阅读Developer's Guide - SafeHtml

希望这是你的问题^^

答案 1 :(得分:0)

我想回答我自己的问题,希望对其他人有用。

整个问题是由于我处理InvocationException的方式,当用户尝试执行被Spring安全阻止的操作时(例如,由于会话超时),抛出了InvocationException。

我通过使用Window.alert(“对用户的解释,详细信息”+ e.getMessage())显示弹出窗口,其中message是从服务器的Exception接收的消息。如果服务器实际发送了异常,这可以正常工作,但是在Spring尝试将用户重定向到登录页面的情况下,似乎显示的是JSP页面本身!我创建了自己的弹出窗口(使用GWT的DialogBox),问题现在解决了。

获得的经验教训:除了调试之外,不要使用Window.alert()!

相关问题