0
我正在使用JSF Mojarra 2.1.18和Primefaces 3.5的Spring Security 3.0.6。Spring Security登录失败
我创建了一个LoginManagedBean,它注入了Spring Security的AuthenticationManager。
@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 2013-03-12 16:26:20
但是,为什么直接使用authenticationManager而不是内置的解决方案? – 2013-03-12 16:34:18
我想做JSF的方式,我注入认证管理器似乎更容易,而不是将一些字段发布到URL。顺便说一下,我没有测试它,但问题仍然与3.0.6相同。问候 – Caron 2013-03-13 16:56:55