2010-01-20 67 views
1

我正在使用spring-security和struts 2.我们的大多数页面都有不受保护的内容与一些受保护的内容(用户控件)混合,所以它是而不是就像你去某个页面的例子,spring-security会拦截所有的东西。相反,我希望能够通过按任意页面上的登录按钮访问登录表单。一旦你成功认证你应该被重定向到原始页面。在未受保护的URL登录失败后记住原始页面以重定向到弹簧安全

这是我难倒的地方。发送URL重定向到可以把它加进表格行动,像这样做:

<form action="/j_spring_security_check?spring-security-redirect=${url}" method="POST"> 
    <...> 
</form> 

的问题是,在此之后登录失败弹簧安全重定向到同一个页面(它的成立做,在应用程序上下文),我无法检索我传递给spring-security-redirect的url。如果这是访问我自己的类之一,我通常会将其作为隐藏参数传递给我的登录控制器的表单或请求参数。但是,由于春季安全是做重定向的人,我有点失落。

到目前为止,我想出的唯一解决方案是试图在sesssion中存储此URL,但是在登录完成成功后,也没有好方法将其删除。有任何想法吗?

回答

0

如果您使用Spring Security 3.0,您可以自定义AuthenticationFailureHandler。例如,其默认实现可以配置为使用forward而不是重定向。

+0

它是2.x,但看着文档我可能会做类似的事情,我会看看。 – wds 2010-01-20 15:53:47

相关问题