Ich wollte das Passwort im Spring Boot-Projekt zurücksetzen, aber es ist ein Memorandum, in dem ich versucht habe, das initialisierte Passwort per E-Mail zu senden.
Die Umwelt ist IDE:Eclipse ** Version: Java8, springframework.boot Version 2.3.0 **
Außerdem ist ein SMTP-Server erforderlich, um E-Mails zu senden, aber es scheint, dass diese nicht lokal gesendet werden können. Daher werde ich dieses Mal problemlos SMTP von Google verwenden.
Bauen Sie, was Sie für den Bau von Gradle benötigen
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-mail'
// https://mvnrepository.com/artifact/org.apache.commons/commons-lang3
//Commons zum zufälligen Generieren von Passwortzeichenfolgen-Kompiliere lang3
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.10'
}
application.propeties
<!--Gmailsmtp-Einstellungen-->
spring.mail.host=smtp.gmail.com
spring.mail.port=587
<!--Lokale SMTP-Einstellungen-->
<!-- spring.mail.host=localhost -->
<!-- spring.mail.port=25 -->
spring.mail.username=*****@*****
spring.mail.password=******
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
Geben Sie die E-Mail-Adresse des Absenders in den Benutzernamen und das Passwort des Google-Kontos mit dieser E-Mail-Adresse in das Passwort ein. Wie im Kommentar erwähnt, ** Wenn Sie sich in einer lokalen Umgebung befinden, setzen Sie den Host auf localhost und geben Sie die Standardportnummer ** ein.
Erstellen Sie ein Eingabeformular, das die Post-Methode in HTML angibt. Wenn Sie eine E-Mail-Adresse eingeben und auf die Schaltfläche "Senden" klicken, wird eine E-Mail an diese Adresse gesendet. (Da es nicht die Hauptleitung ist, wird es weggelassen)
Controller
import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import com.example.demo.entity.User;
import com.example.demo.service.UserService;
@Controller
@RequestMapping("passReset")
public class PassResetController {
@Autowired
private UserService userService;
@Autowired
private MailSender mailSender;
@GetMapping
public ModelAndView passResetPage(ModelAndView mav) {
return mav;
}
@PostMapping
public ModelAndView passResetSend(@RequestParam(name = "email") String email,
User user,
ModelAndView mav) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setTo(email);
user = userService.findUserByEmail(email);
if (user == null) {
simpleMailMessage.setTo(email);
simpleMailMessage.setSubject("Benachrichtigung über das Zurücksetzen des Passworts");
simpleMailMessage.setText("**Ist ein Service\n\r\n\r" + email + "\n\r\n\r Dieses Konto existiert nicht");
this.mailSender.send(simpleMailMessage);
mav.setViewName("redirect:login");
return mav;
}
String password = RandomStringUtils.randomAscii(8);;
userService.accountEdit(user.getEmail(), password);
simpleMailMessage.setTo(email);
simpleMailMessage.setSubject("Benachrichtigung über das Zurücksetzen des Passworts");
simpleMailMessage.setText("**Ist ein Service\n\r\n\r" + email + "\n\r\n\r Sie haben das Passwort für dieses Konto zurückgesetzt.\n\r\n\r Passwort zurücksetzen:" + password + "\n\r\n\r Bitte setzen Sie das Passwort nach dem Einloggen selbst zurück.");
this.mailSender.send(simpleMailMessage);
mav.setViewName("redirect:login");
return mav;
}
}
Was Sie mit der Post-Methode machen
Es wird der Fluss von.
Eigentlich wäre es aus Sicherheitsgründen besser, UUID anstelle von RandomStringUtils zu verwenden, aber angesichts des Umgangs mit Symbolen usw. dachte ich, dass StringUtils einfacher wäre, also habe ich dies verwendet. Wenn Sie mit Ihrem Google-Konto eine zweistufige Authentifizierung eingerichtet haben, können Sie sich nicht bei der Anwendung anmelden. Sie müssen diese daher im Voraus deaktivieren.
Mit dieser Art von Gefühl ist Sicherheit unangenehm, aber ich glaube, ich habe es geschafft, den Fluss zu erfassen. Ich habe es auch auf einem lokalen SMTP-Server versucht, aber ich konnte die an den Server gesendeten E-Mails auf die gleiche Weise überprüfen (obwohl die Einstellungen geringfügig abweichen), sodass ich der Meinung war, dass dies ein realistischer Bereich in der lokalen Umgebung ist. Es war.
Recommended Posts