Это ошибка в Spring Security?
org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter
линия: 134
...
Object principal = getPreAuthenticatedPrincipal(request);
if (checkForPrincipalChanges &&
!currentUser.getName().equals(principal)) {
logger.debug("Pre-authenticated principal has changed to " + principal + " and will be reauthenticated");
...
Не следует ли считать нулевой preAuthenticatedPrincipal неизменным?
Мне не нужно отправлять preAuthenticatedPrincipal с каждым запросом?
Разве не должна быть проверка, чтобы видеть, является ли это значение нулем?
Разве это не должно быть
Object principal = getPreAuthenticatedPrincipal(request);
if (checkForPrincipalChanges &&
principal!=null &&
!currentUser.getName().equals(principal)) {
logger.debug("Pre-authenticated principal has changed to " + principal + " and will be reauthenticated");
Обратите внимание на добавление принципала! = Null &&
Это было найдено в spring-security-web-3.0.2.RELEASE.jar
Если это действительно ошибка, то я думаю, что обхожу ее, добавив в свою реализацию следующее переопределение:
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (getPreAuthenticatedPrincipal((HttpServletRequest) request) != null) {
super.doFilter(request, response, chain);
} else {
//if the request did not include a preauthenticated principal then we should just continue are merry way down the filter chain
chain.doFilter(request, response);
}
}
Дайте мне знать, если я ошибаюсь по поводу того, что это ошибка и пропустил ли я что-нибудь в моем обходном пути.