在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中提取一些信息,以便在用户点击退出后进行网络服务调用。
谢谢。
答案 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*
对象。
谢谢。