Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 54
  1. #1

    Autorizzazioni con le sessioni

    Salve a tutti,

    grazie al vostro aiuto il mio progetto pian piano comincia a prendere forma.
    Spesso però mi ritrovo in certe difficoltà.

    Sto creando un carrello elettronico.
    Qualsiasi utente può benissimo vedere il listino e il carrello.
    Se l'utente procede con il carrello ho messo un reindirizzamento alla pagina di login con dei controlli di sessione all'evento page_load come in esempio:

    codice:
    if Session["SONOREGISTRATO"] =="NO" 
    {   
    Response.Redirect("login.aspx");
    }
    Va tutto bene cosi, però sto avendo dei problemi. Quando compilo la pagina con visualstudio e provo va tutto bene.
    Se chiudo la pagina ricompilo e riprovo va male.
    Va male nel senso che la variabile nella sessione, nonostante viene messa al valore "SI" dalla pagina login.aspx, quando fa il controllo nella page_load la vede sempre "NO".

    Ho notato che quando compilo la prima volta in basso a destra esce la notifica del server di visual studio che parte. Quando chiudo la pagina quindi termina il debug/compilazione il server rimane aperto. Se clicco con il destro e faccio arresta e ricompilo invece tutto funziona bene.
    Vorrei sapere se il problema è il server visual studio o altro perchè non vorrei capitare che quando pubblico il sito su internet gli utenti registrati non riescano ad accedere.

    Chiedo in oltre se questa strada va bene perchè utilizzando le autorizzazioni form ho dei problemi perchè non so come autorizzare più pagine. Nel senso, con il codice qui sotto reindirizza tutte le pagine alla pagina di login, ma io ho varie pagine che devono essere reindirizzate ad altre pagine ancora e non so come fare, ecco perchè sto usando le sessioni ma sto rinscontrando questo problema.


    codice:
    <system.web> 
    <authentication mode="Forms"> 
    <forms name="FormAuth" loginUrl="amministrazione/loginAdmin.aspx"/> 
    </authentication> 
    </system.web> 
    <location path="amministrazione/CambiaStile.aspx">
     <system.web> 
    <authorization>
     <deny users="?"/> 
    </authorization> 
    </system.web> 
    </location> 
    <location path="amministrazione/AggiungiVoce.aspx">
     <system.web> 
    <authorization> 
    <deny users="?"/>
     </authorization>
     </system.web> 
    </location> 
    <system.web>
     <pages theme="TemaPannello">
     </pages> 
    </system.web> 
    <location path="amministrazione/CambiaStruttura.aspx">
     <system.web>
     <authorization> 
    <deny users="?"/> 
    </authorization>
     </system.web> 
    </location> 
    <location path="amministrazione/CreaContenuti.aspx">
     <system.web> 
    <authorization> 
    <deny users="?"/>
     </authorization>
     </system.web> 
    </location>
    Come vedete certe pagine verranno reindirizzate a "amministrazione/loginAdmin.aspx" però non so come fare a reindirizzare altre pagine ad altre pagine ancora.

    Spero di essermi espresso bene, ringrazio in anticipo tutti quanti voi

  2. #2
    La soluzione che stai adottando, forse eredita un po dal veccio asp classico.

    con asp.net le cose sono un pochetto diverse:
    Prima di tutto controlla di aver fatto la configurazione correttamente:
    Autenticazione con le membership

    Fatto questo, nelle pagine dove vuoi controllare se l'utente è loggato (sempre se non lo stai già facendo da web.config, che sarebbe anche meglio), puoi usare una di queste due istruzioni:
    codice:
    if (User.Identity.IsAuthenticated)
        ...
    
    if (Request.IsAuthenticated)
       ...

    Inoltre tieni a mente che l'autenticazione normalmente avviene per Sessione, quindi è normale che chiudendo il browser non sei più autenticato. Stessa cosa se utilizzi una variabile di sessione; chiudendo il browser e riaprendolo, la sessione cambia, quindi tutte le variabili di sessione perdono il loro valore.

    Ciao

  3. #3
    Io non pretendo che se imposto il valori SI su una sessione quando chiudo e riapro il browser sia ancora si. Quando chiudo e riapro se prima era no ed eseguo una nuova uguaglianza SESSION = si la sessione é sempre no come se l istruzione non la facess mai. Ecco perché è strano e chiedo se è un problema del server di visualizza studio

  4. #4
    La variabili che tu inposti nelle sessioni rimangono in memoria fino a quando la sessione è attiva . E cioè fino a quando non chiudi il browser o la scheda aperta che sta visualizzando il tuo sito. Ogni volta che riavvii l'applicazione le variabili si resettano in quanto ogni volta la sessione è nuova. Per mantenre lo stato delle variabili anche dopo aver chiuso la sessione o l'applicazione devi usare i cookie
    Sul mio blog qualche utile risorsa per JQuery, HTML5 , CSS3 , PHP , ASP.NET , WCF SERVICE REST & SOAP ed altro ancora http://zannino1973.wordpress.com

  5. #5
    ok proverò con i cookie.
    Però volevo risolvere tutto con il web.config.

    Ti spiego preciso cosa vorrei ottenere.

    Allora io ho nella cartella admin il file /admin/pannello.aspx.
    Se vado a /admin/pannello.aspx mi reindirizza al file /admin/loginPanel.aspx grazie al seguente codice:

    codice:
     <system.web>
          <authentication mode="Forms">
            <forms name="FormAuth" loginUrl="admin/panelLogin.aspx"/>
          </authentication>
        </system.web>
      
      
      <location path="admin">
        <system.web>
          <authorization>
            <deny users="?"/>
          </authorization>
        </system.web>
      </location>
    Funziona perchè con quel codice qualsiasi pagina presente nella cartella admin deve passare per il loginPanel.aspx.

    Ora ho bisogno (oltre a quello) che se dalla mia root vado alla pagina /chekout.aspx mi reindirizzi alla pagina /login.aspx.

    Non ce un modo per dire al web.config che se apro la pagina A reindirizza al loginA e se apro una pagina B reindirizza al loginB?

  6. #6
    Porva ad aggiungere questo nella tua pagina chekout.aspx
    codice:
     protected void Page_Load(object sender, EventArgs e)
     {
            // Se l'utente non è autenticato
            if (!User.Identity.IsAuthenticated)
           {
    	// Ovviamente fai attenzione al path della pagina a cui vuoi reindirizzare
            // Se login.apsx si trova sotto una cartella ( per esempio admin ) allora devi fare     
    	// var url = ResolveUrl("~/admin/login.aspx"); Response.Redirect(url);
    
    	Response.Redirect("login.aspx");
    	}	
    
    }
    Prova prima semplicemente con Response.Redirect("login.aspx");
    Sul mio blog qualche utile risorsa per JQuery, HTML5 , CSS3 , PHP , ASP.NET , WCF SERVICE REST & SOAP ed altro ancora http://zannino1973.wordpress.com

  7. #7
    Se lo vuoi propio fare dal web.config devi sapere che ogni cartella che hai in un peogetto asp.net può avere questo file. Di fatti è spesso utilizzato propio per la gestione delle autorizzazioni per ogni cartella. Qiundi dovresti avere due web.config :
    uno nella ROOT e uno nella cartella admin.
    E devi predisporre due form di autenticazione , ma devi fare attenzione a non creare conflitti
    Sul mio blog qualche utile risorsa per JQuery, HTML5 , CSS3 , PHP , ASP.NET , WCF SERVICE REST & SOAP ed altro ancora http://zannino1973.wordpress.com

  8. #8
    Originariamente inviato da frank2tek
    Porva ad aggiungere questo nella tua pagina chekout.aspx
    codice:
     protected void Page_Load(object sender, EventArgs e)
     {
            // Se l'utente non è autenticato
            if (!User.Identity.IsAuthenticated)
           {
    	// Ovviamente fai attenzione al path della pagina a cui vuoi reindirizzare
            // Se login.apsx si trova sotto una cartella ( per esempio admin ) allora devi fare     
    	// var url = ResolveUrl("~/admin/login.aspx"); Response.Redirect(url);
    
    	Response.Redirect("login.aspx");
    	}	
    
    }
    Prova prima semplicemente con Response.Redirect("login.aspx");
    ok provo, ma non capisoc come potrebbe funzionare, nel senso, quando faccio il login se tutto va bene dovrò mandare il comando pr dire OK AUTENTICATI. Se poi l'utente si autentica su un login e va su ualtre pagien protette non viene più reindirizzato giusto? E ciò non deve accadere. Se si va alla pagina A devi fare loginA, se effettui l'accesso a login A e vai a pagina B devi passare da LoginB.
    Non so come dovrei procedere. Quando faccio il login controllo se esiste il capo username e password nel mio database eseguo un istruzione del tipo FormsAuthentication.*** non ricordo per autenticaare giusto?
    E cosi facenod se si autentica in un login poi non entra anche nelle altre sezioni che necessitabo di altro login invece? Non so se mi sono spiegato bene xd

  9. #9
    Originariamente inviato da frank2tek
    Se lo vuoi propio fare dal web.config devi sapere che ogni cartella che hai in un peogetto asp.net può avere questo file. Di fatti è spesso utilizzato propio per la gestione delle autorizzazioni per ogni cartella. Qiundi dovresti avere due web.config :
    uno nella ROOT e uno nella cartella admin.
    E devi predisporre due form di autenticazione , ma devi fare attenzione a non creare conflitti
    provai a mettere un webconfig nella cartella admin ma senza successo
    Appena riptovo semmai poisto i 2 web.config e mi dite dove sbaglio

  10. #10
    Prova a postare tutto il codice

    Ma voglio capire una cosa. Appena accedi all'applicazione credo che tu abbia una pagina di Default.aspx o index.aspx
    Poi ci sarà sicuramente un pulsante on una label per fare il login giusto ?
    Quando fai il login dalla pagina pricipale tu quale pagina di login usi ?
    [root]login.aspx o ~/admin/login.aspx
    Sul mio blog qualche utile risorsa per JQuery, HTML5 , CSS3 , PHP , ASP.NET , WCF SERVICE REST & SOAP ed altro ancora http://zannino1973.wordpress.com

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 © 2026 vBulletin Solutions, Inc. All rights reserved.