Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473

    [ASP.NET] Session che si cancella

    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!

    Ultima modifica di djciko; 20-02-2014 a 17:39

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    E' un metodo piuttosto datato, che andava bene per ASP ma non funziona bene per ASP.Net, perche' il processo in cui gira quest'ultima in alcuni casi si riavvia, perdendo gli oggetti impliciti (session, application, context etc)

    Ti consiglio di studiare le nuove metodologie:

    1) http://www.html.it/pag/16660/i-contr...utenticazione/
    2) http://msdn.microsoft.com/en-us/library/8fw7xh74.aspx

    (lo so, è un argomento MOLTO ampio, ma ti assicuro che ti conviene studiarlo UNA SOLA VOLTA e poi tutto sara' piu' facile)
    Ultima modifica di djciko; 20-02-2014 a 17:46

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    Ok grazie mille!
    mi metto subito a studiare allora!

    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    Ho alcune domande giusto per capire il ragionamento...
    di solito usavo dreamweaver per fare i siti..
    ora utilizzero visual studio come indicato nella guida..
    Io ho sempre fatto le varie pagine web inserendo un include delle parti uguali su tutte le pagine, esempio il menu delle categorie, la sidebar, footer...
    Ora con l'oggetto loginviewer posso sempre integrarlo in una pagina (sidebar.aspx) che sarà poi inclusa in tutte le altre pagine oppure devo copiare lo script per ogni pagina?
    Tramite questo oggetto posso sempre distinguere gli utenti user e admin in modo tale da bloccare l'accesso a determinate aree?

    Scusa ma per me è nuovo e vorrei capire proprio bene come sviluppare al meglio il sito

    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.