Простой экран входа в систему JSF - три неверные попытки блокировки - PullRequest
0 голосов
/ 22 октября 2011

Я новичок в JSF и пытаюсь создать скрипт входа в JSF. Он успешно перенаправляет на loginsuccess и loginfailure. но когда это происходит для перенаправления пользователя, когда пользователь ввел пароль 3 раза неправильно, он не перенаправляет -> он дает мне эту ошибку -> Невозможно найти соответствующий случай навигации с from-view-id '/ index. xhtml 'для действия' # {login.checkLogin} 'с результатом' loginlocked '. Я использую Netbeans 7.0 и не могу найти файл face-config.xml.

Index.html

 <?xml version='1.0' encoding='UTF-8' ?>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org 
   /TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html">


<head><title>JSF Login</title></head>
<body>
<h:form>
<table>
<tr>
<td><h:outputText value="Username: " /></td>
<td><h:inputText id="loginname" 
value="#{login.userName}" />
</td>
</tr>
<tr>
<td><h:outputText value="Password: " /></td>
<td><h:inputSecret id="password" 
 value="#{login.password}" />
</td>
</tr>
 <tr>
 <td> </td>
<td><h:commandButton value="Login" 
 action="#{login.checkLogin}"/>
</td>
</tr>
</table>
<h:outputLabel value="#{login.label1}" />
</h:form>
</body>
</html>

loginBean.java

package login;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean(name="login")
@RequestScoped
public class loginBean {
private String userName;
private String password;
private String label1;
private static int numOfAttempts = 0;
/** Creates a new instance of loginBean */
public loginBean() {
}

/**
 * @return the userName
 */
public String getUserName() {
    return userName;
}

/**
 * @param userName the userName to set
 */
public void setUserName(String userName) {
    this.userName = userName;
}

/**
 * @return the password
 */
public String getPassword() {
    return password;
}

/**
 * @param password the password to set
 */
public void setPassword(String password) {
    this.password = password;
}

/**
 * @return the label1
 */
public String getLabel1() {
    return label1;
}

/**
 * @param label1 the label1 to set
 */
public void setLabel1(String label1) {
    this.label1 = label1;
}

 public String checkLogin()
{

    if (userName.equals("Neetu") && password.equals("123456"))
    {
        this.setLabel1("Login Success");
        return "loginsuccess";
    }
    else
    {
        numOfAttempts++;
        if (numOfAttempts >= 3)
        {
        this.setLabel1("Account Locked");
        return "loginlocked";
        }
        else
        {
            this.setLabel1("Login Failure" + numOfAttempts);
             return "loginfailure";
        }

    }
}

}

1 Ответ

1 голос
/ 22 октября 2011

Если вы полагаетесь на новую функцию неявной навигации JSF 2.0, то эта ошибка в основном означает, что у вас нет файла loginlocked.xhtml.

Обычно faces-config.xml находится в веб-приложении/WEB-INF папка.Но в JSF 2.0 это не обязательно нужно.


Не имеет отношения к конкретному вопросу , в вашем bean-компоненте есть большая проблема проектирования:

private static int numOfAttempts = 0;
* 1013Поле * A static является общим для всех экземпляров класса, для всего приложения.Если один посетитель неверно набрал пароль 3 раза, то каждый второй посетитель заблокирован.Хотя это произойдет, когда вы исправите еще одну ошибку в своем коде.Вы не используете метод checkLogin(), проверяющий, превысил ли numOfAttempts до , вы проверяете имя пользователя / пароль.Таким образом, любой, кто заблокирован, может все же успешно войти в систему, когда введено правильное имя пользователя / пароль.

Поработайте над своим логическим мышлением и математическими навыками:)

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