2011-11-07 74 views
0

全部,弹簧安全 - 奇怪的错误

我想添加春天安全(3.0.7)到我的web应用程序(春天3.0.6,瓷砖2.2)。默认< form-login/>按预期工作,但我无法创建一个自定义的。遇到了一些问题:

  1. 用户点击登录链接上时,都会登录页面被调用两次
  2. 这个UserDetailsS​​ervice抛出一个异常,如果用户不存在,但例外从来没有得到任何地方捡到并使用。这导致<表单登录/ >重新路由到登录页面,而不是身份验证失败的网址
  3. 我不会看到错误消息时使用错误的用户名登录(这可能是由于上述问题)
  4. 成功登录后,有时会打开正确的页面,有时会随机打开正在页面内引用的JavaScript文件。

我已经遵循了所有的教程,并不能提出任何工作。有没有人碰巧知道负责创建默认登录的类?也许我可以查看源代码并模仿他们拥有的。

有没有人经历过这样的奇怪行为?

回答

0

我想出了2个我的问题。我发布它们以防其他人发生同样的事情。

对于#1 /#4:该网站正在使用磁贴,并且整个网站都使用了默认的html标头块。

<html> 
<head> 
    <script src="foo.js" type="text/javascript"> 
</head> 

配置explicilty阻止该JavaScript文件谁没有登录的用户。

<intercept-url pattern="foo.js" access="isAuthenticated()"/> 

因此,当一个用户来到主页,该网站将除foo.js.加载由于foo.js中的方法在登录之前从未被调用,所以一切似乎都正常。

然而,当有人试图登录时,Spring Security将foo.js视为第一个要显示的受保护页面,并自动将其打开。

这也导致登录页面被调用两次。一次用于实际的登录链接,一次用于foo.js文件。

+0

我还计算出问题2和3.我忘记将我的登录失败页面添加到'允许'列表,因此它总是重新路由到常规登录页面。 user973479