Ich werde den Ablauf der E-Mail-Authentifizierungsfunktion vorstellen, die beim Erstellen eines Webdienstes implementiert wird. Sie müssen lediglich die Datenbank registrieren und nach Duplikaten suchen. Zunächst dauerte es jedoch einige Zeit, um sich ein Bild von der Implementierungsmethode zu machen Ich möchte hauptsächlich den Ablauf der Implementierung vorstellen.
Gesamtfluss:
Übergeben Sie Benutzerinformationen auf beliebige Weise an die Serverseite, entweder Ajax oder Post.
Wir werden im folgenden Ablauf verarbeiten.
Um festzustellen, dass der Benutzer auf die URL geklickt hat Es ist erforderlich, die Informationen zu dem Benutzer, der in der temporären Tabelle gespeichert ist, zur URL hinzuzufügen. Wenn Sie schlagen oder vorhersagen können, können Sie andere temporäre Benutzer authentifizieren Verwenden Sie die UUID.
RegisterUserController
boolean isMember = memberRepository.existsByUsername(user);
if(!isMember){
String vali = UuidUtil.generateUUID();
BCryptPasswordEncoder passEncoder = new BCryptPasswordEncoder();
try {
TmpMember tmpMember = new TmpMember(user, passEncoder.encode(pass), displyname, vali);
tmpMemberRepository.saveAndFlush(tmpMember);
} catch (Exception e) {
e.printStackTrace();
//status = "Fehler: Fehler beim Speichern der Datenbank";
return status;
}
String IPadnPort = myIP.getYourIP();
String from = "E-Mail-Adresse des Absenders";
String title = "Anfrage zur Bestätigung des Tobidemo-Kontos";
String content = displyname + "Herr." + "\n" + "\n" + "Bitte greifen Sie auf den unten stehenden Link zu, um Ihr Konto zu authentifizieren" + "\n"
+"http://" + IPadnPort
+ "/validate"+ "?id=" + vali ;
try {
SimpleMailMessage msg = new SimpleMailMessage();
msg.setFrom(from);
msg.setTo(user);
msg.setSubject(title);//Titeleinstellung
msg.setText(content); //Körpereinstellungen
mailSender.send(msg);
} catch (Exception e) {
e.printStackTrace();
//status = "Fehler: Fehler beim Senden der E-Mail";
return status;
}
status = "ok";
}
return status; //ng
}
;
return status; //ng
}
Die folgende E-Mail wird an den Benutzer gesendet.
Wenn ein Benutzer auf eine URL klickt, um darauf zuzugreifen, erhält er eine UUID mit der ID =. Überprüfen Sie, ob die empfangene UUID in der temporären Tabelle gespeichert ist. Wenn bestätigt, in der Tabelle, in der die authentifizierten Benutzerinformationen gespeichert sind, Neu registrieren. Anschließend wird zur Dienstanmeldeseite weitergeleitet.
ValidateUserController.java
@CrossOrigin
@RequestMapping(value = "/validate", method = RequestMethod.GET)
public String validate(RedirectAttributes redirectAttributes,ModelAndView mav, @RequestParam("id") String id) throws Exception {
String isRegisterd = "false";
boolean isExist = tmpMemberRepository.existsByValidation(id);
//System.out.println(isExist);
if (isExist) {
try {
TmpMember tmp = tmpMemberRepository.findByValidation(id);
String username = tmp.getUsername();
String displyname = tmp.getDisplyname();
String password = tmp.getPassword();
Member member = new Member();
member.setDisplyname(displyname);
member.setPassword(password);
member.setUsername(username);
memberRepository.saveAndFlush(member);
isRegisterd = "true";
} catch (Exception e) {
//TODO automatisch generierter Fangblock
e.printStackTrace();
isRegisterd = "false";
}
}
redirectAttributes.addFlashAttribute("isRegisterd", isRegisterd);
return "redirect:/edit/begin";
}
Obwohl es sich um eine Mindestfunktion handelt, war die Implementierung der E-Mail-Authentifizierung überraschend einfach. Da es sich um meine eigene Mail-Authentifizierungslogik handelt, mag es etwas Seltsames geben, aber da es sich um eine persönliche Entwicklung handelt, ist es wichtig zu arbeiten!
Recommended Posts