Как сделать ошибку входа в систему («Неверное имя пользователя / пароль») более конкретной на странице входа в систему - PullRequest
1 голос
/ 01 мая 2019

Я создаю страницу входа в систему с использованием JDBC, сервлета и 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);
                        }

                }

1 Ответ

0 голосов
/ 01 мая 2019

В вашем 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);
                     }

             }

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...