UserPasswordAuthenticationProvider.java
package io.featureprobe.api.auth;
import io.featureprobe.api.base.component.SpringBeanManager;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component
public class UserPasswordAuthenticationProvider implements AuthenticationProvider {
@Value("${app.security.validator.impl:common}")
private String validatorName;
@Override
@Transactional(rollbackFor = Exception.class)
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
AccountValidator validator = SpringBeanManager.getBeanByName(validatorName);
return validator.authenticate(authentication);
}
@Override
public boolean supports(Class<?> authentication) {
return (UserPasswordAuthenticationToken.class.isAssignableFrom(authentication));
}
}