Я более или менее последовал этому описанию, чтобы создать пользовательскую форму для входа в систему: http://technology -for-human.blogspot.com / 2011/01 / jsf-2-with-spring-3-protection-with.html
Форма входа использует LoginBean, а LoginBean использует AuthenticationService:
@Service("authenticationService")
public class AuthenticationService {
@Resource(name = "authenticationManager")
AuthenticationManager authenticationManager;
public boolean login(String username, String password) {
try {
Authentication authenticate = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, password));
if (authenticate.isAuthenticated()) {
SecurityContextHolder.getContext().setAuthentication(authenticate);
return true;
}
} catch (AuthenticationException e) {
}
return false;
}
}
Обычно все работает, как и ожидалось, методы входа возвращают true для моего пользователя.Но затем снова появляется форма входа в систему, и я вижу, что SecurityContextHolder.getContext().getAuthentication()
возвращает ноль.
Конфигурация Spring выглядит следующим образом:
<security:http auto-config='true'>
<security:form-login login-page="/login.jsf" />
<security:intercept-url pattern="/login.jsf" filters="none" />
<security:intercept-url pattern="/**" access="ROLE_USER" />
<security:logout logout-url="/logout" logout-success-url="/" />
</security:http>
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider user-service-ref="userDetailsService" />
</security:authentication-manager>
Есть идеи, что может быть причиной?