Seam Identity, Duplicated Messages for the first time
grdzeli_kaci Feb 18, 2008 6:08 AMhi all,
i have simple login page, i use seam identity,
here is my example :
1.view
<h:form id="login"> <rich:panel style="width: 400px;"> <f:facet name="header">Login</f:facet> <p class="LogintCaption">Please login using any username and password</p> <div class="dialog"> <h:panelGrid columns="2" rowClasses="prop" columnClasses="name,value" style="text-align:left"> <h:outputLabel for="username">Username</h:outputLabel> <h:inputText id="username" value="#{identity.username}" styleClass="LoginInput"/> <h:outputLabel for="password">Password</h:outputLabel> <h:inputSecret id="password" value="#{identity.password}" styleClass="LoginInput"/> <h:outputLabel for="language">Language</h:outputLabel> <h:selectOneMenu id="language" styleClass="LoginLangCombo" value="#{localeSelector.language}" onchange="submit();" valueChangeListener="#{localeSelector.select}"> <f:selectItems value="#{localeSelector.supportedLocales}"/> </h:selectOneMenu> <h:outputLabel for="rememberMe">Remember me</h:outputLabel> <h:selectBooleanCheckbox id="rememberMe" value="#{identity.rememberMe}"/> <h:outputLabel for="LogInButn"></h:outputLabel> <h:commandButton id="LogInButn" value="Login" action="#{identity.login}"/> </h:panelGrid> </div> <h:messages id="modalError" layout="table" style="padding:0px;"/> </rich:panel> </h:form>
1. Backing bean :
@Name("authenticator") public class Authenticator { // logger instance @Logger Log log; // Seam Identity Session Bean For User Identification @In Identity identity; // UserName Fro Session Context. private static final String USER_VAR = "currentUser"; // Session Context @In Context sessionContext; // Database Entity Manager @In(value = "#{entityManager}") EntityManager em; // Faces Messages @In private FacesMessages facesMessages; public boolean authenticate() { try { facesMessages.clear(); log.info("authenticating = " + identity.getUsername()); List<Users> users = (List<Users>) em.createNamedQuery("Users.findByUserName").setParameter("userName", identity.getUsername()).getResultList(); if (users == null || (users != null && users.isEmpty())) { facesMessages.addToControl("username", "User #{user.username} does not exists"); //FacesMessages.instance().add("User #{user.username} does not exists"); return false; } else { for (Users user : users) { byte dbpaswd[] = user.getUserPwd(); String strpwd = identity.getPassword(); MessageDigest md5 = MessageDigest.getInstance("MD5"); md5.reset(); md5.update(strpwd.getBytes()); byte[] userpasswd = md5.digest(); boolean result = MessageDigest.isEqual(userpasswd, dbpaswd); if (result) { identity.addRole("admin"); sessionContext.set(USER_VAR, user); return true; } } } facesMessages.addToControl("password", "Incorrect Password For This User"); //FacesMessages.instance().add("Incorrect Password For This User"); return false; } catch (Exception e) { e.printStackTrace(); facesMessages.add("Could not login. System Error"); //FacesMessages.instance().add("Could not login. System Error"); return false; } } }
but for the first time i got two messages into view :
Incorrect Password For This User Incorrect Password For This User
here is screen shot of my program :
[url=http://img2.freeimagehosting.net/image.php?69700131ef.png][img]http://img2.freeimagehosting.net/uploads/th.69700131ef.png[/img][/url]
any idea will be appreciated.
_______________________
Regards,
Paata.
Magticom LTD.