Я использую Spring Security 3.0.6 с JSF Mojarra 2.1.18 и Primefaces 3.5.Ошибка безопасности в Spring Security
Я создал LoginManagedBean, который вводит AuthenticationManager Spring Security.
@ManagedBean
@SessionScoped
public class LoginManagedBean implements Serializable {
private static final long serialVersionUID = 1L;
private static transient final Log logger = LogFactory.getLog(LoginManagedBean.class);
private LoginDTO login;
private String username;
private String password;
@ManagedProperty(value = "#{authenticationManager}")
private transient AuthenticationManager authenticationManager = null;
...
Это работает. Но если логин завершается с ошибкой, я не могу снова войти в систему с правильными значениями. Я думаю, мне нужно очистить/сбросить объект authenticationManager, но я не знаю, как это сделать. Какие-либо предложения? Заранее спасибо!
Это была ошибка в весенней безопасности 3.0.6. По какой-то причине пароль был удален после исключения BadCredentialsException (см. AuthenticationException.java:58). После неудачного входа в систему указанный пароль всегда проверял значение null, что не удалось. Я переключился на 3.0.8, и это решило проблему. Я также попытался перейти на 3.1.3, но это казалось важной задачей. – Caron
Но почему вы используете authenticationManager напрямую вместо встроенных решений? –
Я хотел сделать это методом JSF, и мне было легче вводить аутентификационный менеджер вместо публикации некоторых полей в URL. Кстати, я не тестировал его, но проблема осталась неизменной с 3.0.6. С уважением – Caron