Почему я не могу проверить электронную почту в Spring Boot & Spring Security, ребята?JAVA

Программисты JAVA общаются здесь
Ответить
Гость
 Почему я не могу проверить электронную почту в Spring Boot & Spring Security, ребята?

Сообщение Гость »

У меня есть два компонента Bean: CheckPassword, CheckEmail

Код: Выделить всё

@Service("CheckPassword")
@Primary
public class CheckPassword implements CheckStringInterface {
private static final String regex_password = "^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)(?=.*[@#$%^&+=!])(?=\\S+$).{8,20}$";
@Override
public boolean isStringValid(String rawPassword) {
Pattern pattern = Pattern.compile(regex_password);
Matcher matcher = pattern.matcher(rawPassword);
return matcher.matches();
}
}

Код: Выделить всё

@Service("CheckEmail")
public class CheckEmail implements CheckStringInterface {
private static final String regex_password = "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\\\.[A-Z]{2,6}$";
@Override
public boolean isStringValid(String rawPassword) {
Pattern pattern = Pattern.compile(regex_password);
Matcher matcher = pattern.matcher(rawPassword);
return matcher.matches();
}
}
и я использую @Qualifier для выбора нужного мне компонента, но почему только пароль возвращает true, а электронная почта всегда возвращает false?

Код: Выделить всё

@Qualifier("CheckPassword")
private final CheckStringInterface checkPasswordFormat;
@Qualifier("CheckEmail")
private final CheckStringInterface checkEmailFormat;
@Qualifier("EmailVerifyCode")
private final VerificationCodeManager verificationCodeManager;
@Value("${email_root}")
private String email_root;
private final SendMailTemplateService sendMailTemplateService;
private static final String template_verify_code_register = "templateVerifyCodeRegister";
private static String message_notification = "Use the code to verify this email: ";
@Transactional
public Integer register(RegisterDTO registerDTO, HttpServletRequest request){
if (userService.findByEmail(registerDTO.email()) == null) {
if (checkPasswordFormat.isStringValid(registerDTO.password()) == false
|| checkEmailFormat.isStringValid(registerDTO.email()) == false) {
log.info("Wrong Format {}", checkPasswordFormat.isStringValid(registerDTO.password()));
log.info("Wrong Format {}", checkEmailFormat.isStringValid(registerDTO.email()));
return 0; // Wrong format email or password
}
User user = new User();
user.setEmail(registerDTO.email());
user.setFullName(registerDTO.fullName());
user.setPassword(registerDTO.password());
user.setCreatedAt(Time.getTheTimeRightNow());
user.setUserVerifyCode(verificationCodeManager.generateCode());
user.setUserVerifyCodeExpirationTime(verificationCodeManager.codeExpiration());
log.info("------> RegisterService | register: register with email {}",user.getEmail());
createUser.create(user);
sendMail(user, user.getUserVerifyCode());

request.getSession().setAttribute("email",registerDTO.email());
return 1; // Create successful
}else {
return 2; // Email already exists
}
}
{
"email": "bonbon147852369@gmail.com",
"fullName": "abcdABCD",
"password": "Пароль @1234"
>
это данные, которые я использую для тестирования API на Swagger
извините за мой плохой английский
Я пытаюсь изменить другое регулярное выражение, но это не помогло, я выхожу из системы и вижу, что пароль всегда возвращает true, потому что я ввожу правильный формат, но электронное письмо возвращает false, если я ввожу правильный или истинный формат

Источник: https://stackoverflow.com/questions/781 ... urity-guys
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»