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

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

Post 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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post