probleme d'authentification: JSF & JPA
Bonjour
j'ai à faire une interface d'authentification par login et password, mais ça na pas marché avec moi :( voici mon code:
Couche DAO:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| @Stateless
public class UserDAO implements UserDAORemote, UserDAOLocal {
@PersistenceContext
EntityManager em;
public UserDAO() {
}
public User connect(String username, String password){
Query query=em.createQuery("select u from User u where u.username=:username and u.password=:password");
query.setParameter("username", username);
query.setParameter("password", password);
User result=(User) query.getSingleResult();
if(result!=null){
return result;
}
return null;
}
public List<User> getListUsers(){
Query query=em.createQuery("select u from User u");
List<User> result=query.getResultList();
return result;
}
} |
Mon Bean, à appeler via ma page JSP:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| public class UserBean {
private User currentUser = new User();
private UserDAORemote userdaoremote;
private boolean logged=false;
public User getCurrentUser() {
return currentUser;
}
public void setCurrentUser(User currentUser) {
this.currentUser = currentUser;
}
public String connect() {
User result = userdaoremote.connect(currentUser.getUsername(),
currentUser.getPassword());
if (result != null) {
currentUser = result;
return "authentifie";
}
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("login ou mot de passe faux"));
return null;
}
public String disconnect(){
setCurrentUser(new User());
logged=false;
return "acceuil";
} |
Ma page JSP:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <h:panelGrid border="1" columns="2">
<h:outputText value="Nom d'utilisateur *" ></h:outputText>
<h:inputText id="userId" value="#{userBean.currentUser.username}" required="true" requiredMessage="veuillez saisir votre login">
<f:validateLength maximum="10" minimum="3"/>
</h:inputText>
<h:outputText value="Mot de passe *"></h:outputText>
<h:inputSecret id="passwordId" value="#{userBean.currentUser.password}" required="true" requiredMessage="login ou password faux">
<f:validateLength maximum="10" minimum="3"/>
</h:inputSecret>
<h:message style="color: red; text-decoration: overline" id="firstNameError" for="userId"/>
<h:message style="color: red; text-decoration: overline" id="passwordError" for="passwordId"/>
</h:panelGrid>
<h:commandButton value="Connecter" action="#{userBean.connect}" /> |
Il me rend une erreur sur ma methode Connect déclarée dans mon Bean.
Aussi je veux bien que si mon compte est faux, il me rend un message sur la meme page: "login ou password faux"