我在Spring Framework中使用AuthenticationFailureBadCredentialsEvent。在下面的代码中,您如何获得
AuthenticationFailureBadCredentialsEvent
区分用户是输入了错误的用户ID还是输入了错误的密码?此外,似乎建议转到jsp错误网页的典型方式(即"错误:无效凭据")是在spring security .xml文件中硬编码的网址。 Spring是否提供了一种分支到java程序(某种控制器?或者另一种程序?)的方法,然后根据用户输入的用户标识或密码选择一个网页? (即如果他们连续5次输入错误的密码,我可以做锁定用户的事情。)
package test
import org.springframework.context.ApplicationListener;
import org.springframework.security.authentication.event.AbstractAuthenticationEvent;
import org.springframework.security.authentication.event.AuthenticationFailureBadCredentialsEvent;
import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
import org.springframework.stereotype.Component;
@Component
public class UserAuthenticationErrorHandler implements ApplicationListener<AuthenticationFailureBadCredentialsEvent> {
@Override
public void onApplicationEvent(AuthenticationFailureBadCredentialsEvent event) {
Object userName = event.getAuthentication().getPrincipal();
Object credentials = event.getAuthentication().getCredentials();
System.out.println("Failed login using USERNAME " + userName);
System.out.println("Failed login using PASSWORD " + credentials);
}
}
一个参考: http://www.mkyong.com/spring-security/spring-security-hello-world-example/ http://docs.spring.io/autorepo/docs/spring-security/4.0.3.RELEASE/apidocs/org/springframework/security/core/userdetails/UserDetails.html
感谢您对上述任何建议。
答案 0 :(得分:1)
通过使用上面的代码,我想出了一些改进:
org.springframework.security.web.authentication.AuthenticationFailureHandler
用于处理失败的身份验证尝试的策略。 典型的行为可能是将用户重定向到身份验证页面(如果是表单) 登录)让他们再试一次。可以实现更复杂的逻辑,具体取决于 异常的类型。例如,CredentialsExpiredException可能导致重定向 一个允许用户更改密码的Web控制器。 以来: 3.0