我正在使用带有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>
任何帮助都将不胜感激。
答案 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()!