Невозможно получить идентификатор пользователя (имя пользователя и пароль) из mysql для входа - PullRequest
1 голос
/ 12 марта 2020

Я пытаюсь реализовать этот код для обработки имени пользователя, но он не работает.

Он пропускает оператор if в коде, что означает, что что-то не так в проверке или выборе пользователя. После нажатия кнопки отправки он просто переходит на страницу ошибки.
Вот код, который я использую ниже

CustomerController:

          HttpSession session = request.getSession();

         String userName = request.getParameter("userName");
          String password = request.getParameter("password");
          String firstname = request.getParameter("firstname");

          User.getTransaction().begin();

          Query query = User.createQuery("select p from Customer where p.userName=:uName");
          query.setParameter("uName", userName);

          @SuppressWarnings("unchecked")
           List<Customer> Result = query.getResultList();

          User.close();

          if(Result.size()>0)       
            if(Result.get(0).getPassword().equals(password))
            {
                Customer pass=Result.get(0);
                session.setAttribute("Id", pass.getId());

                String message="Welcome " + firstname;
            return new ModelAndView("userpage","pass",pass);
            }

            return new ModelAndView("error","message","Wrong credentials");
           }    

login jsp file:

          <form action="signin" method="post">

            <table align="center">
                <tr>
                    <td>
                        <label>User Name</label>
                    </td>
                    <td>
                        <input type="text" name="UserName" />
                    </td>

                </tr>  
                <tr>
                    <td>
                        <label >Password</label>
                    </td>
                    <td>
                        <input type="text" name="password" />
                    </td>

                </tr>   
                  <tr>
                    <td></td>
                    <td>
                        <button id="login" type="submit" name="login" style="width:100%;border- 
           radius:10px;text-shadow:2px 2px 3px 
           rgba(150,150,150,0.75);font-family:time">Login</button>
                    </td>
                </tr> 
            <tr>
            <td><a href="register">Don't have an account? Sign Up?</a>
            </td>
           </tr>
          </table>
          </form>

1 Ответ

1 голос
/ 12 марта 2020
  • прежде всего, соблюдайте регистры в request.getParameter("UserName"); так же, как в имени входного тега <input type="text" name="UserName" />
  • String firstname = request.getParameter("firstname"); эта строка попытается извлечь из вас параметр firstname POST запрос, другими словами, он извлекает его из формы входа в систему, которая содержит только два поля для логина и пароля. поэтому вам просто нужно удалить эту строку кода.
  • нет необходимости использовать этот User.getTransaction().begin(); при получении данных из базы данных
  • ваш запрос неверный

попытаться этот код:

        HttpSession session = request.getSession();
        /*get username and password from the login form*/
        String userName = request.getParameter("UserName");
        String password = request.getParameter("password");

        /*query to search customer having the username and password inserted in the login form*/
        Query query = User.createQuery("select p from Customer p where p.userName = :uName and p.password = :uPassword");
        query.setParameter("uName", userName);
        query.setParameter("uPassword", password);

        /*getting the result*/
        Customer pass = (Customer) query.getSingleResult();

        User.close();

        /*if not null, means we have found the user (correct username and password), else login failed)*/
        if(pass!=null){
            session.setAttribute("Id", pass.getId());
            String message="Welcome " + pass.getFirstname();
        }
        else{
            String message="Authentication Error";
        }

        return new ModelAndView("userpage","pass",pass);
...