我正在使用 JDBC、servlet 和 JSP 创建一个登录页面。我的问题是,我不知道如何使登录错误更具体。例如,如果用户输入了错误的用户名,则会显示“错误的用户名”。如果用户输入的密码错误,则会显示“密码错误”
我只能做“错误的用户名/密码”
这是我的代码:
if(loginButton){
String queryStr = "SELECT * FROM accounts WHERE username=? AND password=?";
PreparedStatement ps = conn.prepareStatement(queryStr);
String usernameInput= request.getParameter("usernameInput");
String passwordInput=request.getParameter("passwordInput");
String passwordEnc= encrypt(passwordInput);
ps.setString(1, usernameInput);
ps.setString(2, passwordEnc);
ResultSet rs = ps.executeQuery();
if(rs.next() && captcha.isCorrect(answer)){
if(rs.getString("role").equals("Admin")){
request.setAttribute("role", rs.getString("role"));
request.setAttribute("username", rs.getString("username"));
RequestDispatcher view = request.getRequestDispatcher("adminAccess.jsp");
view.forward(request, response);
}
else{
request.setAttribute("role", rs.getString("role"));
request.setAttribute("username", rs.getString("username"));
RequestDispatcher view = request.getRequestDispatcher("loginResult.jsp");
view.forward(request, response);
}
//response.sendRedirect("loginResult.jsp");
}else if(!captcha.isCorrect(answer)) {
request.setAttribute("captchaMismatch","Captcha does not match");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
else if(!rs.next()){
request.setAttribute("loginError","Wrong username/password!");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
最佳答案
在您的 else-if
中,您可以像下面这样进行更改来实现:
else if(!captcha.isCorrect(answer)) {
request.setAttribute("captchaMismatch","Captcha does not match");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
else {
String sql1 = "SELECT password FROM accounts WHERE username=?";//getting username
PreparedStatement ps=con.prepareStatement(sql1);
ps.setString(1,usernameInput);
ResultSet rs = ps.executeQuery();
//if row exist means username there in table
if(rs.next())
{
//getting password
String pass = rs.getString("password");
//checking if pass is not equal
if(!pass.equals(passwordEnc)){
request.setAttribute("loginError","Wrong password!");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}else{
request.setAttribute("loginError","Wrong username");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
希望这有帮助!
关于java - 如何使登录错误 ("Wrong username/password")在登录页面中更加具体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55931781/