7 messaggi dal 29 giugno 2009
Buongiorno a tutti.

Premetto che sono alle prime armi con asp.net. Ho cercato innanzi tutto online e su vari forum ma senza trovare una risposta esauriente al mio quesito.
Sto scrivendo una semplice applicazione web.
Prevede una web form con un semplice menù. Tramite la voce di menù 'area riservata' si accede ad un'altra web form in cui si effettua l'autenticazione
tramite database (firebird). Se il login ha successo assegno alla variabile login
il nome dell'utente (Session("login") = nome_utente) prelevato dal database e apro un'ulteriore web form appunto 'area riservata'. Al termine della navigazione in questa area, tramite logout si esce dall'area riservata e si ritorna alla webform principale -> Session.Abandon()

Il problema, come avrete già intuito, è che basta premere il pulsante back
per tornare all'area riservata..
Al momento sto testando con firefox 3.0.11. Ho trovato diversi script per
cancellare l'history. Codice da apporre nell'evento load della web form di login
ma nessun sistema ha funzionato, cioè tramite back si torna indietro..

L'unico modo che ho trovato è aprire l'area riservata in una nuova pagina (quindi senza history) e quindi al logout chiuderla.

Avete qualche idea? Forse mi sto perdendo in un bicchiere d'acqua o forse
, vista la mia poca esperienza, non sto utilizzando la corretta metodologia di autenticazione (vorrei comunque eseguirla esclusivamente da Db)

Grazie

Gabriele
Ciao,

il modo migliore per risolvere il problema è sfruttare l'autenticazione web forms di ASP.NET, se cerchi qui su aspitalia trovi un mare di articoli.

In alternativa, dovresti verificare ad ogni Page_Init il valore della tua variabile di sessione ed eventualmente reindirizzare l'utente ad una pagina di errore. Il browser alla pressione del tasto back non reinterroga il server, quindi la vedresti comunque, ma al primo postback ti accorgi che l'utente non è più loggato. Anyway... ancora una volta, questo comportamento lo ottieni in maniera trasparente con la security di ASP.NET, quindi ti invito caldamente a darci un'occhiata.

Pollice verso, invece, per qualsiasi controllo lato client, con js et similia... non è vera security, dato che basta disabilitare js per eluderlo.

A presto,
m.
7 messaggi dal 29 giugno 2009
Grazie per la risposta.

Ho guardato un po' in giro per quanto riguarda autenticazione Forms.
Immagino tu intendessi abbinare autenticazione lato db con quella Forms, giusto?
Cioè, in soldoni, verifico credenziali utente (Login e Pwd) su db dopodichè
autorizzo tramite autenticazione Forms l'utente ad accedere.Eventuali privilegi
intesi come accesso o meno a questo o a quel servizio li garantirei sempre da db
tramite gruppi o altro. Ho interpretato correttamente? Non ho però
trovato molti esempi relativi a questo mix.. Comunque grazie per l'attenzione

Ciao
Non proprio. Intendo dire che agendo opportunamente sul web.config, è possibile fare in modo che alcune pagine del sito siano consultabili da chiunque, mentre altre siano accessibili solo ad utenti autenticati, o addirittura a utenti di un determinato ruolo. Il tutto in maniera del tutto trasparente: una volta "dichiarate" le pagine soggette ad un certo tipo di restrizioni, ASP.NET si occupa di verificare che l'utente collegato le soddisfi, altrimenti rimanda automaticamente alla pagina di login, senza scrivere una riga di codice nelle pagine.

Guarda questo articolo
http://www.aspitalia.com/articoli/asp.net2/membership_roles_api.aspx
e questi, che invece riguardano la prima versione di ASP.NET, ma che sono comunque validi
http://www.aspitalia.com/articoli/asp.net/formauth.aspx
http://www.aspitalia.com/articoli/asp.net/formauthroles.aspx

A presto,
m.
7 messaggi dal 29 giugno 2009
Grazie nuovamente per le dritte,

avevo già letto di forms authentication. Mi rimanevano (e rimangono) n.2 dubbi:

1.Come utilizzare tale sistema con db firebird (intendo rispetto
all'integrazione nativa di ms sql server)

2.Se devo considerare 50 utenze ognuna con propria login e password,tra
l'altro soggette ognuna a variazioni nel tempo, devo inserirle una per una
nel web config ??
(<credentials passwordFormat="Clear">
<user name="kappa" password="test" />
<user name="webngo" password="test" />
<user name="aspitalia" password="test" /> ...)

o posso in qualche modo verificare le mie credenziali direttamente da tabella db (firebird)?? Questo è un po' il nodo della questione.

Probabilmente le mie domande sono banali e probabilmente non ho studiato
accuratamente quanto mi hai passato..

Ciao e grazie ancora
7 messaggi dal 29 giugno 2009
Scusa.. penso di aver risolto, mi mancava un passaggio semplicissimo...

Web.Security.FormsAuthentication.RedirectFromLoginPage(txtUser.Text, chkPersistentCookie.Checked)

Riassumendo in estrema sintesi

Senza db (da web.config):

FormsAuthentication.Authenticate(name,password)
(Confronta le credenziali contenute nel web.config)

Se invece si usa un tabella di un db (qualsiasi esso sia) effettua la
validazione dell'utente confrontando le credenziali su tabella
fatto questo (con esito positivo ovviamente)

FormsAuthentication.RedirectFromLoginPage(txtUser.Text, chkPersistentCookie.Checked)
e autentico in modalità forms l'utente ad accedere

Corretto ?

ciao

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.