Ciao a tutti,
sto facendo un sito in asp.net, ho una pagina di login dove controllo utente e password da un db mysql.
Se l'utente inserisce correttamente i dati creo la session di 3 dati nel seguente modo passando i valori dal datareader della query che ho eseguito
codice:
Session("utente") = dr("utente")
Session("tipo") = dr("tipo")
Session("nome") = dr("Nome") & " " & dr("cognome")
ovviamente il controllo del login è subito a inizio pagina prima del tag HTML.
Sempre nella stessa pagina di login ho una colonna sx (sidebar) che è uguale su tutte le pagine, in questa colonna ho un
if dove se esiste la sessione("utente")
stampo il classico messaggio benvenuto nome cognome
altrimenti
visualizzo il form per il login
ecco il codice
codice:
<% if String.IsNullOrEmpty(CType(Session.Item("utente"), String)) then %>
<form name="login" method="post" action="login.aspx">
<div>
<label>E-mail</label>
<input type="text" name="utente"/>
</div>
<div>
<label>Password</label>
<input type="password" name="pass"/>
</div>
<br>
<input type="submit" class="submit" value="Login"/>
</form>
<% else
select case (CType(Session.Item("tipo"), String))
case "user"
%>Benvenuto, <% response.write(Session.Item("nome"))
case "admin"
end select
end if
%>
Questo script funziona per la pagina login, infatti visualizzo la scritta benvenuto, nome cognome. Come apro un'altra pagina, mi compare il form e non piu la scritta di benvenuto, è come se la session si cancellasse all'apertura di una nuova pagina...
Nel mio file web.config ho impostato le seguenti variabili:
codice:
<configuration>
<system.web>
<customErrors mode="Off"/>
<sessionState timeout="20"
cookieName="****"
cookieless="false"
mode="InProc" />
<machineKey validationKey="*****" decryptionKey="*****" validation="SHA1" decryption="AES" />
</system.web>
<connectionStrings>
<add name="ODBCConnection"
connectionString="driver={MySQL ODBC 3.51 Driver};server=****;database=****;uid=*****;pwd=*****;"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Ho provato ad aggiungere anche il machine key ma non ho risolto il problema.
L'hosting è su ............, windows con framework 2.0
Io in generale ho sempre usato questo metodo per il login, mi salvavo il nome utente e il tipo di utente tramite le session e poi per le pagine specifiche controllavo il tipo di utente se era abilitato oppure no ad accedere alla sezione.
Visto che è la prima applicazione in asp.net (ho sempre usato php e asp) vi chiedo se è un problema di impostazione delle session nel web.config?
Magari esiste un modo piu corretto per effettuare il login tenendo in considerazione il tipo utente (user e admin)?
Grazie per tutti i consigli!