ログインに対するMySQLからのユーザーID(ユーザー名とパスワード)を取得できません

スルタナTasneem:

私は、ユーザーのログインを処理するために、このコードを実装しようとしていますが、動作しません。

それは何かがユーザー検証または選択で間違っていることを意味し、コードで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");
           }    

ログイン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>
バシル:
  • まず、内ケース尊重request.getParameter("UserName");入力タグの名前と同じ<input type="text" name="UserName" />
  • String firstname = request.getParameter("firstname");この行は、パラメータを抽出しようとしfirstnameますからPOST、他の言葉で、それが唯一のログイン名とパスワードのための2つのフィールドを含むログインフォームからそれを抽出し、要求します。そうあなただけのコード行を削除する必要があります。
  • これを使用する必要はありません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);

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=280260&siteId=1