2012-02-15 53 views
0

我正在使用GWT和Spring安全性来管理用户登录。 为什么我会得到一个弹出窗口,其中包含我的登录页面的HTML内容文本,而不是被定向到我的格式正确的登录页面,届时会话过期,我尝试在我的应用程序中做一些事情?为什么我的登录页面显示为弹出式文本,而不是格式化的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

请出示您的login.jsp的代码 – BraginiNI 2012-02-15 06:15:28

+0

登录页面显示正确的......并且用户将被注销,以及在用户登录之前...问题仅出现在当用户被“意外退出“(会话过期),用户尝试在应用程序中执行某个操作(这是一个GWT应用程序),所以我认为login.jsp页面不相关(它是纯JSP,与GWT无关)。 – Renato 2012-02-16 04:51:49

回答

0

我想回答我的问题,希望它可能是其他人有用。

整个问题是由于我处理InvocationException的方式造成的,当用户试图执行被Spring安全阻止的操作时(例如由于会话超时),会引发这种情况。

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

经验教训:不要使用Window.alert()进行调试以外的任何操作!

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

要actaully输出格式的HTML,你必须创建一个SafeHTML类。下面是一个简单的例子:

SafeHtml safeHtml = new SafeHtml() { 

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

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

希望这是你的问题^^

+0

这不是构建safehtml实例的好方法 - 它甚至可能鼓励开发人员在那里开始混合变量,然后我们就像SafeHtml不存在一样糟糕。鼓励使用SafeHtmlBuilder,以及转义文本的方法vs允许已知的好常量。你的例子并不是不安全的,但它可能暗示某些人可以自己继承SafeHtml。 – 2012-02-15 16:02:19

+0

是的,我知道...但是我仍然没有发现SafeHtml类是如何被使用的......:/ – Stefan 2012-02-15 22:24:30

+0

SafeHtmlBuilder适合大多数情况,SafeHtmlTemplates也不错。如果必须,请使用SafeHtmlUtils。一般来说,您不会过多地使用这些SafeHtml实例,而是将它们传递给小部件(除非您自己构建小部件)。最大的用例是针对单元格,因此可以快速/安全地构建复杂单元格的大型表格。 – 2012-02-16 02:29:13

相关问题