Я создаю приложение с помощью Spring, Hibernate, MVC, Maven и Tomcat.Я сделал все как в этом уроке:
https://stackabuse.com/spring-security-email-verification-registration/
- Так что теперь у меня есть это:
-пользователь зарегистрирует новую учетную запись (проверка и т. Д.)
-пользовательское перенаправлениена сайт, когда подтверждается, что электронное письмо активации отправлено на его адрес электронной почты
- в базе данных у меня правильно установлена связь между пользователем и его токеном
- я получаю электронное письмо с уникальным токеном, подобным этому:
Привет, пользователь !!Чтобы активировать свой аккаунт, нажмите ссылку ниже
http://localhost:8080/confirm-account?token=5e5aad4f-90c4-4f83-8f58-83b66d63659f
Но когда я копирую и вставляю эту ссылку (я не знаю, почему у меня нет только ссылки, я думаю, что это сейчас не важно), я получил ошибку 404Так же, как у api нет этого адреса.
А теперь я покажу вам мой контроллер с регистрацией и подтверждением аккаунта
@PostMapping("/add")
public String addUser(@ModelAttribute @Valid User user, Model model, BindingResult bindingResult, HttpServletRequest request) throws MessagingException {
User user1 = userRepository.findByEmail(user.getEmail());
User user2 = userRepository.findByUsername(user.getUsername());
if (user1 != null) {
bindingResult.rejectValue("email", "error.email", "Jest juz taki email w bazie!");
return "register_user";
}
if (user2 != null) {
bindingResult.rejectValue("username", "username.error", "Ta nazwa jest w użyciu");
return "register_user";
} else if (bindingResult.hasErrors()) {
return "register_user";
} else {
userRepository.save(user);
ConfirmationToken confirmationToken = new ConfirmationToken(user);
confirmationTokenRepository.save(confirmationToken);
emailSender.sendMail(user.getEmail(),"Konto w serwisie","<b>Witaj " + " "+ user.getFirstName()+"!</b>" +"<br> Dokonałeś rejestracji!" +
"<br>Aby dokończyc proces musisz kliknąć w link który znajduje się poniżej:<br> "
+ "http://localhost:8080/confirm-account?token=" + confirmationToken.getConfirmationToken());
model.addAttribute("confirmationMessage", "Pomyślnie utworzyłeś konto!Potwierdzenie wysłane na adres" + user.getEmail());
return "success";
}
}
И подтверждение
@RequestMapping(value="/confirm-account", method= {RequestMethod.GET, RequestMethod.POST})
public String confirmUserAccount(Model model, @RequestParam("token")String confirmationToken)
{
ConfirmationToken token = confirmationTokenRepository.findByConfirmationToken(confirmationToken);
if(token != null)
{
User user = userRepository.findByEmail(token.getUser().getEmail());
user.setEnabled(true);
userRepository.save(user);
return "accountVerified";
}
else
{
model.addAttribute("message", "The link is invalid or broken!");
return "error";
}
}
Спасибо!