登录后执行

时间:2010-03-11 11:55:05

标签: spring spring-security

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

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

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

非常感谢。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

我通过创建一个处理程序来解决它,该处理程序扩展了SavedRequestAwareAuthenticationSuccessHandler实现AuthenticationSuccessHandler并在onAuthenticationSuccess方法中执行我的自定义实现。

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