Безопасность Spring - SecurityContext.authentication null в taglib и jsp, но нормально в контроллере
Мы боролись с этой проблемой уже некоторое время. Нашел несколько сообщений об этом, но ни один не решил мою проблему. Вероятно, это будет иметь какое-то отношение к тому факту, что SecurityContext активен для определенного потока, но даже тогда я не знаю, как его решить:
Рассмотрим следующий код для получения пользователя, который вошел в систему:
SecurityContextHolder.getContext().getAuthentication().getPrincipal()
Запуск этого кода в контроллере вернет (правильно) пользователя, вошедшего в систему. Запуск этого кода из taglib или jsp throws NPE (authentication = null). Также весенний тег не функционирует (предположительно по той же причине).
Извлечь из web.xml:
AcegiFilter
org.acegisecurity.util.FilterToBeanProxy
targetClass
org.acegisecurity.util.FilterChainProxy
AcegiFilter
/*
Извлечение из весеннего конфигурационного файла безопасности:
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/**=httpSessionIntegrationFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterSecurityInterceptor
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/myaccount.htm=ROLE_CUSTOMER