如何完全注销?春季安全

时间:2015-07-13 22:07:38

标签: spring security logout

如何完全退出?我有我的xml文件:

<security:logout logout-url="/logoutMe" />

当我输入/ logoutMe url时,我没有注销 - 在我的控制器上我添加了:

SecurityContextHolder.getContext().getAuthentication().getName()

并将名称添加到ModelAndView并显示在我的页面上,并且仍有我的用户名,而不是登录前的匿名用户。

如何完全退出? 我还试图用:

创建我自己的LogoutSuccessHandler实现
SecurityContextHolder.clearContext();

但是..它似乎无法正常工作

1 个答案:

答案 0 :(得分:0)

这可能是Spring安全性在注销时调用的方法(来自SecurityContextLogoutHandler类):

public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
    Assert.notNull(request, "HttpServletRequest required");
    if (invalidateHttpSession) {
        HttpSession session = request.getSession(false);
        if (session != null) {
            logger.debug("Invalidating session: " + session.getId());
            session.invalidate();
        }
    }

    if(clearAuthentication) {
        SecurityContext context = SecurityContextHolder.getContext();
        context.setAuthentication(null);
    }

    SecurityContextHolder.clearContext();
}

您是否尝试使用默认值,由spring security logout url /logout提供?或者你必须定制一些东西?