Как получить имя пользователя для выхода из системы в пользовательском LogoutSuccessHandler? - PullRequest
0 голосов
/ 04 февраля 2020

В приложении 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, или, может быть, здесь есть другой класс, который я должен подклассифицировать?

...