我只有在用户成功登录系统后才需要进行一些处理。我认为我可以做一个RESTful方法并将其设置为default-target-url,所以当登录成功时它转到这个url然后我可以重定向到我的web应用程序的真实索引。
<form-login login-page='/login.htm' default-target-url='/home.htm' always-use-default-target='true' />
问题是这个处理可以通过调用它的URL来执行,这样任何用户都可以随时执行它。我想确保它只在登录后执行。 有没有办法做到这一点?
非常感谢。
答案 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属性。