spring security 扩展 UserDetailsService 同时根据手机号或用户名查询
时间: 2023-12-07 15:31:47 浏览: 64
UserDetails 的实现,你能给出一个示例吗?
当然,我可以为您提供一个示例。在自定义 UserDetailsService 中实现根据手机号或用户名查询 UserDetails 的方法,示例代码如下:
```java
@Service("userDetailsService")
public class CustomUserDetailsService implements UserDetailsService {
private final UserRepository userRepository;
@Autowired
public CustomUserDetailsService(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public UserDetails loadUserByUsername(String usernameOrMobile) throws UsernameNotFoundException {
User user = userRepository.findByUsernameOrMobile(usernameOrMobile, usernameOrMobile)
.orElseThrow(() -> new UsernameNotFoundException("User with username/mobile not found."));
return new CustomUserDetails(user);
}
}
```
该示例中,我们使用 UserRepository 查询数据库中的 User 实体,通过 findByUsernameOrMobile 方法实现根据手机号或用户名查询用户信息的功能,并将其转化为 Spring Security 所需的 UserDetails 对象。这样,我们就可以在实现 UserDetailsService 时,轻松地实现根据手机号或用户名查询 UserDetails 的需求。
阅读全文