357 messaggi dal 10 giugno 2003
Ciao a tutti,

innanzi tutto colgo l'occasione x fare gli auguri di buon anno nuovo a tutti!!
ora vengo al problema..
Ho un applicazione web che sfrutta l'autenticazione basata su Form e nel web.config ho settato che timeout="20" e slidingexpiration="true";
ora nell'applicazione faccio uso dell'oggetto Session x immagazzinare una variabile in questo modo:

Session[idUserLoggato]= Variabile;

idUserLoggato è l'id dell'user che ha effettuato il login tramite FormAuthentication (quindi User.Identity.Name);

quello che succede è che superati i 20 minuti se faccio qualcosa nella pagina web che richiede di riprendere il valore dall'oggetto session ottengo un bel ObjectReference NULL; e fin qui mi sembra ok; la cosa che non mi torna è che
però x ASP.NET sono ancora un utente LOGGATO correttamente!! xchè non mi rimanda subito alla pagina di Login? l'expire del ticket del form non va quindi di pari passo con il timeout della Session?
se non si possono gestire sincronizzati come mi devo comportare?
cioè se scade la sessione e l'user è ancora loggato lo devo buttare fuori io da codice con un FormAuthentication.SignOut?

grazie in anticipo x ogni eventuale spiegazione!
ciao,
ale
1.508 messaggi dal 27 dicembre 2005
Strano,a me sinceramente quando scade la sessione mi rimanda lla pagina di Login.
19 messaggi dal 30 maggio 2006
Ciao ^_^

a me capitava la stessa cosa, ho risolto cambiano il nome del cookie (proprietà name sul tag form).

Poi per sicurezza puoi impostare nel global.asax il codice
FormsAuthentication.SignOut() all'interno della funzione Session_End

Mauro
357 messaggi dal 10 giugno 2003
Ciao grazie per la risposta ma ora mi sembra di aver risolto in parte il problema inserendo nel web.config il tag <sessionState mode="inProc" TimeOut="20" />

dico in parte xchè allo scadere dei 20 minuti se clicco su un pulsante mi aspetterei di tornare alla pagina di Login specificata nel tag Form di Authentication e invece la maggior parte delle volte Explorer mi mostra la schermata di "la pagina non può essere visualizzata"; così torno indietro col back del browser, riclicco sullo stesso pulsante e stavolta mi rimanda alla pagina di Login; è casuale.
inoltre un'altra cosa che ho notato è che lo sliding expiration non sempre mi sembra che funzioni come dovrebbe o meglio..magari sono io che non ho capito bene come funge.
da quello che sò allo scadere dei 20 minuti di inattività completa sulla pagina dovrebbe scadere il ticket, altrimenti essere rinnovato; invece ( e mi sono messo col cronometro! ) dopo 15 minuti mi ha buttato fuori.
qualcuno mi può spiegare cosa succede?

ciao,
ale
19 messaggi dal 30 maggio 2006
Ciao ^_^

hai provato a dare un'occhiata alla configurazione di IIS, nelle proprietà del sito - home directory - configurazione - opzioni?

hai qualche componente che potrebbe causare questo comportamento?
alexbj wrote:
però x ASP.NET sono ancora un utente LOGGATO correttamente!! xchè non mi rimanda subito alla pagina di Login?

perchè, da quando in qua Session è legato al tiket di authentication?
l'expire del ticket del form non va
quindi di pari passo con il timeout della Session?

no.

cioè se scade la sessione e l'user è ancora loggato lo devo buttare fuori io da codice con un FormAuthentication.SignOut?

se ti serve una "feature" del genere, ovviamente devi farlo tu. i modi sono cento, uno è quello che hai appena detto.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.