-1
私はこの問題に直面していましたが、これは頻繁に質問されていますが、問題は私が行った研究で修正されていません。サーブレット:ログイン試行がデクリメントに失敗しました
私が直面している問題は、同じユーザー名で2回ログインしようとすると、試行回数が減るという論理を作ったということです。しかし、それは常に2のままです。
私は基本的にこれを行いました:ページの訪問回数をカウントするのにHttpSessionを使ってみましたが失敗しました。私はそれを私のログインページにリダイレクトするたびにそれを感じます。セッションを再開するだけです。
私の初期の計画は、JDBCコードで、ユーザが3回以上ログインしようとするとuser_acc == 1
をブロックするということです。しかし、私が直面している大きな問題を見て、データベースに接続せずに入力フィールドからユーザー名を取るだけの基本的なロジックを用意することにしました。私はこれを修正した後、データベースに接続するように変更します。
本当にありがとうございます。
String name = request.getParameter("username");
String pass = request.getParameter("password");
PrintWriter pw = response.getWriter();
int login_attempt = 3;
HttpSession session=request.getSession();
session.setAttribute("name",name);
String sessionName = (String) session.getAttribute("name");
if(name.equals("scott")){
if(pass.equals("abc"))
{
pw.println(("Success"));
pw.println(sessionName);
}
else {
login_attempt = login_attempt - 1;
if(login_attempt < 3 && sessionName.equals(name)){
pw.println(" You have this try " + login_attempt + " : " + sessionName);
} else if(login_attempt == 0 && sessionName.equals(name)){
pw.println("Please contact admin for as your account is blocked");
}
}
}
は他人の利益のために を解決し、私は他人の利益のために解決この問題
int loginAttempt;
if (session.getAttribute("loginCount") == null) {
// This will first set login count to zero
session.setAttribute("loginCount", 0);
loginAttempt = 0;
} else {
loginAttempt = (Integer) session.getAttribute("loginCount");
// System.out.println("How many attempt " + loginAttempt);
}
if (loginAttempt == 3) {
session.setMaxInactiveInterval(5);
System.out.println(("game over"));
pw.println("No more attempt please call admin\n\n");
pw.println("<br/> \n\n\n\n\n\n left for interval");
} else {
System.out.println("How many attempt " + loginAttempt);
// loginAttempt = loginAttempt + 1;
loginAttempt++;
int allowLogin = 3 - loginAttempt;
session.setAttribute("message", "loginAttempt= " + loginAttempt
+ ". Invalid username or password. You have " + allowLogin + " attempts remaining.");
System.out.println(session.getAttribute("message"));
response.sendRedirect("login.jsp");
}
if (isTrue != false) {
pw.println("Username does not exist in database");
}
session.setAttribute("loginCount", loginAttempt);
pw.println("Invalid users");
これを解決しましたコードは不完全です。私はいくつかのクラスにあると思います。変数login_attemptはローカルであり、ショットごとに復元されます –
セッションとして保存するユーザー名と、間違ったパスワードでログインページにリダイレクトするときの比較にはあまり意味がありません。失敗したログインに基づいてユーザ名を認識し、それに応じて試行を減らします。何か案が? –
あなた自身の問題を解決した場合は、**回答**として投稿して、質問に編集しないでください。あなたの質問からソリューションを削除し、回答として投稿してください。 –