2010-03-11 99 views
0

只有在用户成功登录系统后,我才需要进行一些处理。我认为我可以做一个RESTful方法并将其设置为default-target-url,因此当登录成功时它会转到此URL,然后我可以重定向到我的Web应用程序的真实索引。登录后执行

<form-login login-page='/login.htm' default-target-url='/home.htm' always-use-default-target='true' /> 

的问题是,这种处理可以通过调用它的URL,因此它可以在任何时间任何用户都可以执行被执行。我想确保它只在登录后执行。 有没有办法做到这一点?

非常感谢。

+1

嗯 - 快速读取您的标题 - 尽管对用户来说看起来有点苛刻:) – Paddy 2010-03-11 13:01:13

回答

1

我通过创建延伸SavedRequestAwareAuthenticationSuccessHandler实现AuthenticationSuccessHandler一个处理程序,并通过做我的自定义实现在onAuthenticationSuccess方法解决它。

要在成功登录后调用此处理程序,我在XML配置中设置了authentication-success-handler-ref属性。

1

你可以在Servlet过滤器中做这个吗?

/** 
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, 
*  javax.servlet.ServletResponse, javax.servlet.FilterChain) 
*/ 
public void doFilter(ServletRequest request, ServletResponse response, 
     FilterChain chain) throws IOException, ServletException 
{ 
    chain.doFilter(request, response); 

    // Do post processing here if we have a valid session for the user 
} 

而且在web.xml

<filter> 
    <filter-name>PostLoginFilter</filter-name> 
    <filter-class> 
     com.scoreout.web.servlet.filter.PostLoginFilter 
    </filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>PostLoginFilter</filter-name> 
    <url-pattern>/login.htm</url-pattern> 
</filter-mapping> 
+0

谢谢,我已经做了类似的事情,但使用Spring Security提供的处理程序。 – Javi 2010-03-12 14:01:19