Visualizzazione dei risultati da 1 a 10 su 10

Discussione: login in JSF

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    137

    login in JSF

    ciao, sto facendo un login in javaserver faces però non capisco perkè, qnd effettuo il login non mi apre la pagina di benvenuto.


    questo è il metodo nel bean:


    public String controlloLogin()
    {
    String strUsername = (String) username.getLocalValue();
    String strPassword = (String) password.getLocalValue();

    utente = LoginService.getLoginUserService(strUsername, strPassword);

    if(utente.getRetErrorCode() == 0)
    {
    LoginUser user = new LoginUser();
    user.setUsername(strUsername);
    FacesContext ctx = FacesContext.getCurrentInstance();
    ExternalContext ectx = ctx.getExternalContext();
    Map<String, Object> map = ectx.getSessionMap();
    map.put("utenteInSessione", user);

    return "success";
    }
    else
    {
    FacesMessage message = new FacesMessage(utente.getRetErrorDesc());
    FacesContext.getCurrentInstance().addMessage(utent e.getRetErrorDesc(), message);

    return "failure";
    }

    }


    questo è il faces-config.xml

    <managed-bean>
    <managed-bean-name>loginBean</managed-bean-name>
    <managed-bean-class>com.reasonthatweb.bean.LoginBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <navigation-rule>
    <from-view-id>/login.jsp</from-view-id>
    <navigation-case>
    <from-action>#{loginBean.controlloLogin}</from-action>
    <from-outcome>success</from-outcome>
    <to-view-id>/prova.jsp</to-view-id>
    </navigation-case>
    <navigation-case>
    <from-action>#{loginBean.controlloLogin}</from-action>
    <from-outcome>failure</from-outcome>
    <to-view-id>/login.jsp</to-view-id>
    </navigation-case>
    </navigation-rule>

    nella pagina login.jsp
    <h:commandButton action="#{loginBean.controlloLogin}" value="Login" />


    ho sbagliato o dovrei aggiungere qualcosa?

    Grazie....

  2. #2
    Cosi di prima acchito sembra tutto ok.
    Quindi ti chiedo :
    Il bottone lo hai racchiuso dentro un h:form ?
    L'action associata al commandButton viene richiamata ?
    Nella console ci sono eccezioni ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    137
    il bottone l'ho racchiuso dentro h:form, viene richiamata anke il metodo "controlloLogin" e nn mi da nessuna eccezione.

    Ti spiego: il metodo "LoginService.getLoginUserService(strUsername, strPassword);", sta nella classe service, che richiama un metodo nel DAO che si connette a DB chiamando una store procedure...

    potrebbe essere un problema nell web.xml?

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    137
    penso di aver risolto....

    String strUsername = (String) username.getLocalValue();
    String strPassword = (String) password.getLocalValue();

    in pratica non avevo fatto i get e set delle variabili strUsername e strPassword, dichiarandole locali. Ho fatto get e set di username e password, e infatti passandoglieli direttamente al metodo, va alla pagina di benvenuto. Cmq sia ho dovuto anke cambiarli da HtmlInputText a String.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    137
    altra domanda: quando effettuo un login, l'utente in sessione lo mette in automatico oppure lo devo settare? Se si come posso fare?


    Thx.

  6. #6
    Ovviamente la sessione (utente) la gestisce il tuo programma, a meno che non ti appoggi al jaas del tuo application server.
    Nel tuo primo posto lo facevi
    codice:
    Map<String, Object> map = ectx.getSessionMap();
    map.put("utenteInSessione", user);

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    137
    in pratica vorrei controllare se l'utente loggato è in sessione, perkè se nn lo è,vorrei farlo tornare alla pagine di login...

    una volta fatto

    codice:
    Map<String, Object> map = ectx.getSessionMap(); map.put("utenteInSessione", user);
    nelle varie pagine come dovrei procedere?

  8. #8
    Per controllare se in sessione ti basta vedere se nella mappa di sessione esiste l'utente
    codice:
    ExternalContext ectx = ctx.getExternalContext();
    Map<String, Object> map = ectx.getSessionMap();
    if(map.containsKey("utenteInSessione"))
    {
      l'utente è loggato
    }else
    {
     l'utente non è loggato
    }
    Cmq, ti consiglio di dare un occhio a JAAS in quanto l'autenticazione può venire gestita in automatico dall' application server.

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    137
    come AS uso Jboss 5.0....non è che potrebbe andare in conflitto qualcosa?...ma poi il pezzo di codice che mi hai mostrato dove lo dovrò mettere, che nn ho ben capito...?

  10. #10
    Appunto perchè
    dove mettere quel pezzo di codice
    non è banale in jsf.
    Devi creare un buona vecchia FilterServlet e gestire li il fatto se l'utente è loggato allora può andare avanti o pure deve loggarsi.
    Qui c'è la documentazione su come configurare l'applicazione per usare il jaas.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.