小编Kat*_*sas的帖子

Spring BadCredentials事件未触发

如果用户尝试使用错误的凭据进行身份验证,我想记录.因此我将此事件监听器类添加到我的项目中:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationListener;
import org.springframework.security.authentication.event.AuthenticationFailureBadCredentialsEvent;
import org.springframework.stereotype.Component;

@Component
public class AuthenticationFailureListener
        implements ApplicationListener<AuthenticationFailureBadCredentialsEvent>{

    private final Logger logger = LoggerFactory.getLogger(getClass());

    @Override
    public void onApplicationEvent(AuthenticationFailureBadCredentialsEvent event) {
        System.out.println("test");
        logger.info("test2");
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是它根本不起作用.我使用Spring Security默认登录页面.使用错误凭据时,页面显示"错误凭据"错误,但上面的方法不会被调用.我有一个非常相似的成功事件监听器代码,它的工作非常好:

@Component
public class AuthenticationSuccessListener implements
        ApplicationListener<InteractiveAuthenticationSuccessEvent> {

    private final Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired private UserService users;

    @Override
    public void onApplicationEvent(InteractiveAuthenticationSuccessEvent event) {
        User user = users.get(event.getAuthentication().getName());
        boolean isAdmin = user.getRole().equals(User.ROLE_ADMIN);
        logger.info((isAdmin ? "Admin" : "User") + " with id " + user.getIdLink()
                + " …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security

9
推荐指数
2
解决办法
5348
查看次数

标签 统计

java ×1

spring ×1

spring-security ×1