No se puede recuperar la identidad del usuario (usuario y contraseña) de MySQL a inicio de sesión

Sultana Tasneem:

Estoy tratando de implementar este código para procesar el inicio de sesión de usuario, pero no funciona.

Se salta la sentencia if en el código que significa que algo está mal en la validación de usuario o la selección. Simplemente va a la página de error después de pulsar el botón de enviar.
Aquí está el código que estoy utilizando a continuación

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");
           }    

archivo de inicio de sesión JSP:

          <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>
Bashir:
  • en primer lugar, respetar los casos en request.getParameter("UserName");mismo que en nombre de etiqueta de entrada<input type="text" name="UserName" />
  • String firstname = request.getParameter("firstname");esta línea va a tratar de extraer el parámetro firstnamede usted POSTsolicita, en otras palabras, lo extrae de su formulario de inicio de sesión que sólo contiene dos campos de usuario y contraseña. por lo que sólo tiene que borrar esta línea de código.
  • sin necesidad de utilizar esta User.getTransaction().begin();en la obtención de datos de la base de datos
  • su consulta es incorrecta

probar este código:

        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);

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=280263&siteId=1
Recomendado
Clasificación