В приложении Spring Boot я реализовал пользовательский LogoutSuccessHandler
, потому что мне нужно очистить повар ie, и это прекрасно работает, но я подумал, что я мог бы также воспользоваться преимуществами пользовательского класса и добавить некоторые записи в журнал. , Однако моя проблема в том, что параметр Authentication
для onLogoutSuccess
всегда равен null
. Я предполагаю, что это потому, что сначала происходит выход из системы и , затем вызывается onLogoutSuccess()
.
Вот выбор моего кода:
public class MyLogoutSuccessHandler implements LogoutSuccessHandler {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public void onLogoutSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException {
if( authentication!=null ) {
logger.debug("Signing out user: "+authentication.getName());
} else {
logger.debug("Unknown user reached logout success handler. (Perhaps he clicked 'sign out' twice.)");
}
// clear the cookie
httpServletResponse.setStatus(HttpServletResponse.SC_OK);
httpServletResponse.sendRedirect("/login?logout");
}
}
Сообщение, которое всегда печатается второй, ссылаясь на "неизвестный пользователь". Есть ли способ получить имя пользователя в LogoutSuccessHandler, или, может быть, здесь есть другой класс, который я должен подклассифицировать?