在自定义LogoutHandler Spring MVC中拉取userDetails

时间:2013-03-04 11:23:07

标签: spring session spring-mvc spring-security logout

在MyLogoutHandler类中,我覆盖了determineTargetUrl()方法,这里我调用MyUserDetials userDetails = (MyUserDetials)userContextManager.getUserDetails(),但userDetails为null。

这是配置:

<security:logout  
invalidate-session="true"
success-handler-ref="MyLogoutHandler"
logout-url="/auth/logout"/>

我注意到,因为invalidate-session =“true”,它是null?但我喜欢将此属性保持为“true”,我可以通过其他方式进行配置吗?

我的目标是:我需要从userDetails中提取一些信息,以便在用户点击退出后进行网络服务调用。

谢谢。

2 个答案:

答案 0 :(得分:2)

您需要创建自己的LogoutHandler,实施

 void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication);

将其添加到security:logout代码中。从authentication参数获取用户详细信息。

答案 1 :(得分:2)

我解决了这个问题。我创建了My Own Handler并覆盖了:

public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {...}

*SimpleUrlLogoutSuccessHandler*的方法。现在我可以根据我的弹簧配置得到*authentication*对象。

谢谢。