在一个Spring MVC应用程序中,我试图实现一个自定义的注销成功处理程序。这个处理程序应该访问一个session属性,并根据它的值进行一些查询和日志记录。
实施的相关部分:
1.安全配置:
第一个月
<beans:bean id="logoutSuccessHandler" class="some.package.LogoutSuccessHandler">
<beans:constructor-arg value="/login" />
</beans:bean>
字符串
1.处理程序本身:
public class LogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler {
@Autowired
private SomeService someService;
public LogoutSuccessHandler(String defaultTargetUrl) {
this.setDefaultTargetUrl(defaultTargetUrl);
}
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
throws IOException, ServletException {
String sessionAttribute = request.getSession().getAttribute("someAttribute").toString();
someService.doSomething(sessionAttribute);
super.onLogoutSuccess(request, response, authentication);
}
}
型
当用户登录时,我正在向会话添加一些属性。它们在不同的控制器请求期间都是可见的。问题是,当我在注销期间尝试访问会话属性时,它们都消失了。这是否意味着到那时注销已经发生并且会话信息被清除了?我可以看到SessionId
与以前一样。
所以,我的问题是:会话属性会发生什么变化,有没有一种方法可以在LogoutLogin中访问它们?
1条答案
按热度按时间bbuxkriu1#
字符串
invalidate-session
的默认值为true,因此您将在处理程序中获得一个新的会话。当您将此值设置为
false
时,您可以获取旧会话,并且在完成业务后不要忘记使会话无效。