WebApp e Sessioni

  1. 3 weeks ago
    Edited 3 weeks ago

    Ciao a tutti,

    sto cercando di gestire un login in una WebApp.

    Ho creato un form con un login, al click del pulsante del login effettuo questa azione:

        if isLogin = true then
          
          Session.Cookies.Set("login", username)
          utente = utente.caricaUtente(username)
          Session.userLogged = utente
          wpLogin.close
          wpHome.show
    end if

    Se poi all'interno della pagina wpHome guardo i lvalore della Session.userLogged è Nil

    Ma se sono sullo stesso browser e l'ho inserito precedentemente non dovrebbe essere valorizzato?
    Come utilizzo i dati in sessione??

    PS: l'oggetto utente non è NIL ho verificato

    Grazie Mille

    Mi spiace, handleUrl viene eseguito all'esterno delle sessioni.
    Se il codice lo esegui all'interno di una sessione o di una pagina, implicitamente vive nella sessione, il tutto funziona.

    P.S.
    Attenzione all'impiego dell'identificatore "session": vedi le note di WebSession .

  2. last week

    Domenico C

    Oct 9 Milano

    Sono riuscito ad arrivare ad una Quadra. Riesco a leggere la sessione.

    Ma se cambio TAB è NIL come se aprissi una nuova sessione, penso che per questo dovrei agire a livello di cookie.

    Farò in questo modo.

  3. Maurizio R

    Oct 9 Pre-Release Testers, Xojo Pro
    Edited last week

    Se cambi TAB cambi sessione: e' come se aprissi una nuova finestra.
    Quello che l'occhio percepisce e il cervello sottointende non corrisponde a come il sistema funziona.
    La coincidenza di un unico browser con due tab distinte non corrisponde alla visione dall'applicazione.
    Non a caso le applicazioni web Xojo sono a tutti gli effetti delle applicazioni "single page" con corrispondenza univoca alla sessione.

  4. 3 days ago

    @Maurizio R
    Se in J2EE con qualsiasi Framweork (Struts, Spring ecc..) cambio Tab la sessione mi rimane attiva.
    Ho lavorato anche con Liferay, quando cambio Tab l'utente è loggato, la sessione è attiva. Quindi non perdo gli oggetti caricati in nella Session che posso riutilizzare a livello di codice. Questo mi facilità senza dover effettuare il login ogni volta.

    Sto provando ad ottenere lo stesso risultato utilizzando inserendo i dati nei Cookie.
    Volevo utilizzare la Sessione sull'evento HandleUrl a livello di WebApplication, ma mi sa che non si può fare Aihme... mi serviva inserire nella sessione dei parametri in questo stato.. ma la sessione deduco venga caricata in seguito.

  5. Maurizio R

    Oct 15 Pre-Release Testers, Xojo Pro

    WebAPplication.HandleUrl viene gestita all'esterno delle sessioni e, come riportato nella documentazione, solo per URL non gestiti dall'applicazione.
    I cookies dovrebbero essere accessibili a meno di particolari gestioni del browser utilizzato.
    Le sessioni sono indipendenti ma i cookies dovrebbero essere accessibili da tutte le sessioni aperte dalla stessa istanza di browser secondo la documentazione WebSession.Cookies.Set

  6. Edited 3 days ago

    Io non riesco a farlo funzionare.

    Sto utilizzando come guida:

    https://docs.xojo.com/WebSession.Cookies.Set

    E secondo la Guida:

    Cookies are browser specific. If a user has multiple instances of your app open at the same time using the same browser, they will all share the same cookie information.

    Ma se apro un'altra istanza sullo stesso browser mi vedo sempre la Session senza parametri caricati.. come se fosse nuova.

    Questo è quello che ho fatto in scrittura:

    Session.Cookies.Set("lingua", "IT")

    In lettura ho fatto questo:

      if  (Session <> Nil and Session.Cookies <> Nil) then
        sigla = Session.Cookies.Value("lingua") 
      end if

    Dentro la condizione non entra perché è NIL

    PS: Ho provato con IE e con Chrome

  7. Maurizio R

    Oct 15 Pre-Release Testers, Xojo Pro
    Edited 3 days ago

    Firefox si comporta come riportato dalla documentazione sia in un altro tab che in un'altra finestra.
    In quale punto dell'applicazioni accedi a "Session"?: il valore pari a nil indica che stai riferendo alla sessione in un punto in cui la sessione non e' definita.

  8. Il settaggio:

    Session.Cookies.Set("lingua", "IT")

    Lo eseguo nel metodo Open della Session

    Mentre la lettura viene effettuata da un metodo presente nella HandleUrl , perchè mi deve generare un HTML.

    Mi aspetterei che dopo aver settato il Cookie sia sempre presente.. invece mi sa che che qualsiasi cosa parta da HandleUrl non vede nessuna sessione

  9. Maurizio R

    Oct 15 Pre-Release Testers, Xojo Pro Answer
    Edited 3 days ago

    Mi spiace, handleUrl viene eseguito all'esterno delle sessioni.
    Se il codice lo esegui all'interno di una sessione o di una pagina, implicitamente vive nella sessione, il tutto funziona.

    P.S.
    Attenzione all'impiego dell'identificatore "session": vedi le note di WebSession .

  10. Volevo generare pagine HTML... mi sa che allora devo abbandonare questa strada!!!
    Pensavo che HandleUrl riusciva a leggere cosa era stato impostato nel Browser. Mi inventerò altro ;)

    Grazie mille per il supporto.

  11. Maurizio R

    Oct 15 Pre-Release Testers, Xojo Pro
    Edited 3 days ago

    Non ho capito comunque l'obbiettivo che vuoi raggiungere e come questo sia legato ad una sessione.
    Magari il tutto e' fattibile senza problemi: potresti chiarire meglio cosa vuoi realizzare?

    La WebApplication ha comunque visibilita' di tutte le sessioni.

  12. In pratica sto realizzando un mio CMS personale per gestire il mio sitoweb, sono giù ad un buon punto.

    La parte BackEnd sono le classiche WebForm di Xojo mentre la parte FrontEnd sono delle pagine HTML.

    Per entrare in BackEnd chiamo una URL che mi porta sulla form.. da li non ho problemi con la Sessione.
    Ora la sessione mi serviva per mantenere dei parametri impostati, in modo che le pagine HTML avevano dei dati a disposizione (lingua impostata, utente loggato ecc)

    La generazione delle pagine HTML partiva dal HandleUrl, perché ovviamente l'utente chiama le pagine tramite Url del browser.. cliccando anche su un link porta a quella classe. Ovviamente non c'è la sessione.

    Ora sto rimendiando passando alcuni parametri che mi interessano in querystring, non è ottimale.. ma per ora funziona.

  13. Maurizio R

    Oct 15 Pre-Release Testers, Xojo Pro

    La sessione ha un WebSession.Identifier che puoi utilizzare a livello di applicazione mediante WebApplication.SessionWithIdentifier per accedere alla sessione.
    Se riesci a generare l'url delle pagine aggiungendo WebSession.Identifier come parametro puoi in HandleURL identificare la sessione ed accedere alle proprieta' della sessione stessa.
    Magari il tutto e' piu' semplice?

  14. 2 days ago

    Uh... faccio subito una prova
    ti inserirò nelle note dei creatori :D

or Sign Up to reply!