[JAVA] So implementieren Sie die E-Mail-Authentifizierungsfunktion zum Zeitpunkt der Benutzerregistrierung

Einführung

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:

  1. (Benutzer) Geben Sie Ihre E-Mail-Adresse und Ihr Passwort ein
  2. (System) Generieren Sie eine UUID und speichern Sie sie in einer temporären Tabelle mit Benutzerinformationen
  3. (System) Senden Sie die Authentifizierungs-URL an den Benutzer
  4. Klicken Sie in der (Benutzer-) E-Mail-Adresse auf die Authentifizierungs-URL
  5. Registrieren Sie offiziell den Benutzer der temporären Tabelle, die der (System-) UUID entspricht

1. Geben Sie Ihre E-Mail-Adresse und Ihr Passwort ein

Übergeben Sie Benutzerinformationen auf beliebige Weise an die Serverseite, entweder Ajax oder Post.

スクリーンショット 2018-05-13 17.20.36.png

2.3. Benutzerinformationen in temporärer Tabelle speichern und Authentifizierungs-URL an Benutzer senden

Wir werden im folgenden Ablauf verarbeiten.

  1. Erhalten Sie die eingegebenen Benutzerinformationen
  2. Überprüfen Sie, ob die eingegebene E-Mail-Adresse bereits registriert ist
  3. Speichern Sie den Benutzer in einer temporären Tabelle mit UUID, falls bestätigt
  4. Generieren Sie eine Authentifizierungs-URL und senden Sie sie per E-Mail an den Benutzer. Die Authentifizierungs-URL lautet "/ validate / id = UUID".

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

	}

4. Klicken Sie in der E-Mail-Adresse auf die Authentifizierungs-URL

Die folgende E-Mail wird an den Benutzer gesendet.

スクリーンショット 2018-05-13 17.36.51.png

5. Registrieren Sie den Benutzer der temporären Tabelle, die der UUID entspricht, offiziell

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";
	}

Zusammenfassung

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

So implementieren Sie die E-Mail-Authentifizierungsfunktion zum Zeitpunkt der Benutzerregistrierung
Zum Zeitpunkt der Neuregistrierung E-Mail-Sendefunktion mit Action Mailer
So implementieren Sie die Brotkrumenfunktion mit gretel
[Für Anfänger] So implementieren Sie die Löschfunktion
So löschen Sie den dem Benutzer zugeordneten Tweet, wenn Sie ihn gleichzeitig löschen
So fügen Sie die Löschfunktion hinzu
Implementierung der Benutzerauthentifizierungsfunktion mit devise (2)
So bestimmen Sie die Anzahl der Parallelen
Implementierung der Benutzerauthentifizierungsfunktion mit devise (1)
[Java] So stellen Sie die Datums- und Uhrzeit auf 00:00:00 ein
Implementierung der Benutzerauthentifizierungsfunktion mit devise (3)
So sortieren Sie eine Liste von SelectItems
So implementieren Sie TextInputLayout mit Validierungsfunktion
[Verarbeitung × Java] Verwendung der Funktion
[Spring Boot] Ich habe untersucht, wie die Nachbearbeitung der empfangenen Anforderung implementiert werden kann.
So greifen Sie mit der TCP-Funktion von Spring Integration direkt auf Socket zu
So ändern Sie den Wert einer Variablen an einem Haltepunkt in IntelliJ
[Rails] So lösen Sie die Zeitverzögerung von created_at nach der Speichermethode
So finden Sie die Ursache des Ruby-Fehlers
Passen Sie an, wie der Inhalt von Recyclerview aufgeteilt wird
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
[Rails6] So verbinden Sie die von Scaffold generierte Buchungsfunktion mit der von devise generierten Benutzerfunktion
Stellen Sie die Zeit von LocalDateTime auf eine bestimmte Zeit ein
Ausgabe der Verwendung der Slice-Methode
So zeigen Sie das Ergebnis des Ausfüllens des Formulars an
So implementieren Sie den Authentifizierungsprozess durch Angabe von Benutzername und Kennwort in Spring Boot
So löschen Sie untergeordnete Elemente, die gleichzeitig einem übergeordneten Element zugeordnet sind
Implementieren wir eine Funktion, um die Anzahl der Zugriffe auf die API mit SpringBoot + Redis zu begrenzen
[Java] So erhalten Sie die URL der Übergangsquelle
So löschen / aktualisieren Sie das Listenfeld von OneToMany
So stellen Sie die Anzeigezeit in Rails auf japanische Zeit ein
Wie schreibe ich Scala aus der Perspektive von Java
Geschwindigkeitsvergleich zum Zeitpunkt der Generierung zum Zeitpunkt der Datumskonvertierung
[Java] So erhalten Sie den Maximalwert von HashMap
[Rails] So ändern Sie den Spaltennamen der Tabelle
[Android] So erhalten Sie die Einstellungssprache des Terminals
[Rails] So erhalten Sie den Inhalt starker Parameter
Zusammenfassung der Implementierung von Standardargumenten in Java
So laden Sie eine ältere Version von Apache Tomcat herunter
[Swift] So erhalten Sie die Firebase-Dokument-ID
Wie ist der nächste Wert des Time-Objekts korrekt?
Wie man Kotlin zum ersten Mal studiert ~ Teil 2 ~
Wie man Kotlin zum ersten Mal studiert ~ Teil 1 ~
Einführung der Benutzerauthentifizierung