@Component
public class MyUserDetailsService implements UserDetailsService {
private Logger logger= LoggerFactory.getLogger(getClass());
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
TUser user = userRepository.findByUsername(username);
if (user != null) {
logger.info("登录用户名:"+user.getUsername());
logger.info("密码:"+passwordEncoder.encode(user.getPassword()));
logger.info("User---->{}",user.toString());
return user;
}
user.setUsername("查无此人");
logger.info("User---->{}",user.toString());
return user;
}
}@Component
public class MobileDetailsService implements UserDetailsService {
private Logger logger= LoggerFactory.getLogger(getClass());
@Autowired
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String telPhone) throws UsernameNotFoundException {
TUser user = userRepository.findByTelPhone(telPhone);
if (user != null) {
logger.info("登录用户名:"+user.getUsername());
logger.info("User---->{}",user.toString());
return user;
}
throw new InternalAuthenticationServiceException("无法获取用户信息");
}
}@Configuration
public class SmsCodeAuthenticationSecurityConfig extends SecurityConfigurerAdapter<DefaultSecurityFilterChain,HttpSecurity> {
@Autowired
private AuthenticationFailureHandler imoocAuthenticationFailureHandler;
@Autowired
private AuthenticationSuccessHandler imoocAuthenticationSuccessHandler;
@Autowired
// @Qualifier("mobileDetailsService")
@Qualifier("mobileDetailsService")
private UserDetailsService userDetailsService;@Configuration
public class BrowserSecurityConfig extends AbstractChannelSecurityConfig {
@Autowired
private SecurityProperties securityProperties;
//IDE错误,此处忽略
@Autowired
private DataSource dataSource;
@Autowired
@Qualifier("myUserDetailsService")
private UserDetailsService userDetailsService;现在出现的问题是用户名登录走的不是我自己打的loadUserByUsername()而是InMemoryUserDetailsManager()走到这个类中,请问老师怎么解决这个问题?
Spring Security技术栈,REST风格开发常见接口,独立开发认证授权模块保证REST服务安全
了解课程