Gestire le Sessioni in vbnet

mercoledì 18 marzo 2009 - 15.53

$ilver Profilo | Junior Member

Eccomi di nuovo ... vorrei sapere un modo da poter gestire le sessioni in maniera corretta e coerente.

Come posso fare?

Inoltre vorrei fare in modo che se uno non si autentica non possa entrare in nessuna parte del sito nemmeno se scrive il link della pagina.Io per ora l'ho gestito facendo dei semplici if all'inizio di ogni pagina e guardo se la mia variabile con l'id utente è piena o no.
Se non lo è mi rimanda alla login altrimenti mi fa entrare, è corretto?

Grazie a tutti in anticipo

rossimarko Profilo | Guru

Ciao, asp.net ti consente di avere già degli strumenti per fare questo.

Io avevo scritto un articolo su come personalizzarli: http://www.dotnethell.it/articles/Membership-Role-Profile-Provider.aspx

Nell'articolo trovi un esempio su come configurare alcune pagine perchè gli utenti anonimi non possano accederci:

<authorization> <deny users="?"/> </authorization>
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

Ok, quindi anche nell'esempio tuo se un utente si logga all'applicazione, poi chiude la tab del browser e ne riapre una nuova e va in una pagina qualsiasi dell'applicazione egli potrà entrarci tranquillamente senza rifare il login, mentre se si chiude il broswer deve rifare il login altrimenti non può accedere da nessuna parte.
Giusto?

rossimarko Profilo | Guru

Quella impostazione è una caratteristica del browser. Chiudere un tab non vuol dire chiudere il processo di visualizzazione e quindi i cookie di autenticazione rimangono attivi, perciò riaprendo un tab oppure aprendone un'altro sullo stesso sito risulterai comunque ancora loggato
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

Ciao RossiMark, scusa se riprendo questa discussione, ma ho ancora il problema dell'autenticazione nel senso che quando scrivo un link della mia applicazione, mi si apre la pagina anche se non sono autenticato.

Io ho usato questo metodo http://support.microsoft.com/?id=308157#2 , e il tutto funziona ma non riesco a dirgli di ritornare alla pagina di login se non sei autenticato.

Grazie mille.

rossimarko Profilo | Guru

Dovresti postare le impostazioni che hai nel webconfig e un esempio di chiamata così cerchiamo di capire cosa può essere.

Non serve tutto il web.config, solo la parte relativa al tipo di autenticazione e ai permessi impostati
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

Nel web config nella parte di autorizzazioni ho il seguente codice:
<authentication mode="Forms"> <forms name=".ASPXFORMSDEMO" loginUrl="login.aspx" protection="All" path="/" timeout="30" /> </authentication> <authorization> <deny users ="?" /> <allow users = "*" /> </authorization>

Per la chiamata ad una pagina faccio un response.redirect
Response.Redirect("Rete.aspx", True)

All'apertura di una qualsiasi pagina volevo mettere un controllo ma nn so come fare?
Cioè una volta che l'utente si è autenticato devo riempire una variabile di sessione oppure ci sono modi più belli e più funzionali?

rossimarko Profilo | Guru

Nella configurazione però tu hai messo che gli utenti anonimi non possono accedere alle pagine, quindi se quando fai il redirect l'utente non si è loggato correttamente verrà redirezionato nuovamente alla pagina di login
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

Esatto però la pagina mi si apre lo stesso anche se non è loggato.

Che tipo di controllo dovrei fare nel pageload della pagina che si sta provando ad aprire senza essere loggato?

rossimarko Profilo | Guru

Tu vuoi che la pagina si veda quando non sei loggato?

Perchè in effetti nella fonfigurazione dici entrambe le cose, prima disabiliti gli anonimi, poi accetti tutti, quindi il risultato è che tutti entrano:
<authorization>
<deny users ="?" />
<allow users = "*" />
</authorization>

Se vuoi bloccare tutti gli utenti anonimi lascia
<authorization>
<deny users ="?" />
</authorization>

Poi se imposti la pagina di login nella forms autentication questa verrà esclusa dal filtro e quindi potranno accederci tutti
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

Io voglio che le mie pagine se non sei autenticato non si vedano e ti rimandi alla login.
Se metto solo quella riga nel webconfig <deny users ="?" /> accade quello che voglio io o devo fare dei controlli in ogni pagina?

rossimarko Profilo | Guru

No fa tutto lui, basta fare una prova. Quella configurazione serve apposta per evitare di inserire il codice in tutte le pagine
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

Ok ho provato, ora funziona.

Secondo te vado bene a usare quella form del link Microsoft che ti ho fatto vedere prima?

rossimarko Profilo | Guru

Se intendi la form authentication direi proprio di si. E' fatta apposta per gestire applicativamente l'accesso ad un sito web
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

Ti ringrazio davvero tanto.

$ilver Profilo | Junior Member

Scusa, se ti rompo ancora,
ora sto provando a mettere il link ad una pagina della mia pallicazione ma me la apre, può darsi che si è tenuto qualcosa in cache?
Se si come posso fare per vederlo?

rossimarko Profilo | Guru

Per forzare il ricaricamento di una pagina basta premere CTRL+F5

Controlla invece che non risulti già loggato (magari hai scelto di salvare i dati dell'utente con persist = true).

Eventualmente metti un pulsante di logout e fai una prova per capire meglio (ci sono anche dei controlli che ti indicano lo stato dell'utente)
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5