我试图显示没有使用 spring security 的用户的无效尝试。我正在使用自定义 User 类来获取除用户名和密码之外的其他用户详细信息。我创建了两个侦听器类,即 AuthenticationSuccessEventListener 和 AuthenticationFailureListener 来更新用户的无效尝试。
现在在 onApplicationEvent 方法中,我试图获取自定义用户对象(CustomUserDetails),如下所示:
@Component
public class AuthenticationFailureListener implements ApplicationListener<AuthenticationFailureBadCredentialsEvent> {
@Autowired
private ILoginDAO loginDAO ;
@Override
public void onApplicationEvent(AuthenticationFailureBadCredentialsEvent event) {
CustomUserDetails user = (CustomUserDetails)event.getAuthentication().getPrincipal();//I get ClassCastException here.
String strUserID = user.getUserID();
CustomUserDetails customUser = loginDAO.loadUserByUsername(strUserID);
if (customUser != null){
...
} } }
event.getAuthentication().getPrincipal() 返回一个字符串,即用户名,我试图将其转换为 CustomUserDetails (自定义用户类),我得到错误。
PS - 我在登录页面中输入用户 ID/密码,因此我将用户 ID 作为参数传递给所有方法,包括 loadUserByUsername(strUserID)。
如何从 AuthenticationFailureBadCredentialsEvent / AuthenticationSuccessEvent 对象中获取侦听器类中的自定义用户对象?