У меня есть два компонента 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("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": "Password@1234"
}
this is the data i use for test api on swagger
sorry for my bad english
I try to change another regex but it didn't help, I going to log it out and i see password always return true because i input right format but email will return false through i input right or true format
Источник: https://stackoverflow.com/questions/781 ... urity-guys
Мобильная версия