Page 1 of 1

Sitzungsdaten gehen nach dem Einreichen eines Formulars in der Servlet -Anwendung verloren

Posted: 27 Feb 2025, 08:29
by Anonymous
Ich arbeite an einer Java -Servlet -Anwendung in der Funktion des Zurücksetzens Passwort. Die GET -Methode überprüfen im Grunde einen Parameter -E -Mail und prüft, ob die E -Mail gültig ist. Setzen Sie dann die E -Mail als Attribut in der Sitzung. Danach leiten Sie die Anfrage an die jsp. < /P>
weiterpublic void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException {
String email = request.getParameter("email");
if (isUserValid(email)) {
request.getSession().setAttribute("email", email);
} else {
request.getSession().setAttribute("error", "Invalid token or " +
"token expired");
}
request.getRequestDispatcher("jsp/reset-password.jsp").forward(request,
response);
}
< /code>
In der JSP zeige ich nur das Formular an, wenn die E -Mail in der Sitzung vorhanden ist. < /p>






${sessionScope.email}

New Password

name="password" placeholder="Enter new password"
required/>






Confirm
Password

id="confirmPassword"
name="confirmPassword"
placeholder="Confirm new password"
required/>







Reset
Password





${sessionScope.error}



${sessionScope.error}


< /code>
Das Formular wird dann an diese Post -Methode gesendet, in der ich überprüfe, ob die E -Mail erneut gültig ist, zusammen mit dem neuen Passwort. Danach aktualisiere ich den Benutzer. < /P>
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException {
String email = (String) request.getSession().getAttribute("email");
if (email == null || !isUserValid(email)) {
request.getSession().setAttribute("error", "Invalid token or " +
"token expired");
response.sendRedirect("reset-password?email=" + email);
return;
}
String password = request.getParameter("password");
String confirmPassword = request.getParameter("confirmPassword");
if (!password.equals(confirmPassword)) {
request.getSession().setAttribute("error", "Passwords do not " +
"match");
response.sendRedirect("reset-password?email=" + email);
return;
}
User user = userDAO.findUserByEmail(email);
if (user == null) {
request.getSession().setAttribute("error", "User not found");
response.sendRedirect("reset-password?email=" + email);
return;
}

user.setPassword(password);
userDAO.updateUser(user);

request.getSession().setAttribute("success", "Password reset " +
"successfully");
request.getSession().removeAttribute("email");
response.sendRedirect("reset-password?email=" + email);

}
< /code>
Wenn ich in lokal teste. Alles funktioniert gut, bis ich das Formular einreiche. Die Anfrage wird an die Post -Methode gesendet, es gibt jedoch kein E -Mail -Attribut in der Sitzung. Ich habe es mit Debugging -Tools bestätigt. Ich habe die Sitzung nicht ungültig und entferne das Attribut überhaupt nicht. Es wäre schön, wenn jemand den Code analysieren und mir dabei helfen könnte.