我想使用Spring和Angular实现用户身份验证。我试过这个:
@PostMapping("request")
public ResponseEntity<?> resetRequest(@RequestBody PasswordResetDTO resetDTO) {
return userRepository.findByUsername(resetDTO.getName()).map(user -> {
if (!user.getEmail().equals(resetDTO.getEmail())) {
return new ResponseEntity<>("NAME_AND_EMAIL_MISMATCH", HttpStatus.BAD_REQUEST);
}
resetHandler.sendResetMail(user);
return ok(resetDTO);
})
.orElseGet(() -> notFound().build());
}
接口:
public interface UserRepository extends CrudRepository<Users, Integer> {
Optional<Users> findByUsername(String username);
Optional<Users> findByEmail(String email);
Optional<Users> findByResetCode(String code);
}
实施:
@Override
public Optional<Users> findByUsername(String username) {
String hql = "select e from " + Users.class.getName() + " e where e.login = ?";
Query query = entityManager.createQuery(hql).setParameter(0, username);
Optional<Users> users = (Optional<Users>) query.getSingleResult();
return users;
}
但我得到了Users cannot be cast to java.base/java.util.Optional
实现这一点的正确方法是什么?我应该使用Optional,还是应该只使用null check?
https://stackoverflow.com/questions/52936111
复制相似问题