Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di tyson69
    Registrato dal
    Jan 2005
    Messaggi
    154

    protezione dir con web.config

    ciao a tutti dovrei proteggere una dir con tutti i files(aspx) all'interno dall'accesso non autorizzato: ho utilizzato l'autenticazione basata su Form e nella dir interessata ho inserito un web.config così:
    <?xml version="1.0"?>
    <!--configuration>
    <system.web>
    <authentication mode="Forms">
    <forms path="/" loginUrl="/admn/Login.aspx" protection="All" timeout="5">
    <credentials passwordFormat="Clear">
    <user name="ciao" password="ciao" />
    </credentials>
    </forms>
    </authentication>

    <authorization>
    <allow users="ciao" />
    <deny users="?" />
    </authorization>
    </system.web>
    </configuration-->

    ma mi restituisce un errore:
    Non è possibile utilizzare una sezione registrata come allowDefinition='MachineToApplication' al di sotto del livello di applicazione. L'errore può essere dovuto alla presenza di una directory virtuale non configurata come applicazione in IIS.

    a questa riga:
    <authentication mode="Forms">

    un aiutino sarebbe gradito, o se ci sono soluzioni differenti ve ne sarei grato!

    Ciao a tutti e buon week end!

  2. #2
    prova così:

    se la directory da proteggere è (ad esempio) admn

    non aggiungere un nuovo web.config (se l'hai fatto cancellalo)
    modifica semplicemente il web.config nella directory principale (applicazione) così:

    <system.web>
    <authentication mode="Forms">
    <forms name=".ASPXAUTH"
    loginUrl="login.aspx"
    protection="All"
    timeout="30"
    path="/"
    requireSSL="false"
    slidingExpiration="true"
    cookieless="UseDeviceProfile" />
    </authentication>
    <authorization>
    <allow users="*"/>
    </authorization>
    </system.web>

    <location path="admn">
    <system.web>
    <authorization>
    <deny users="?"/>
    <allow users="ciao"/>
    </authorization>
    </system.web>
    </location>

    infine, nel file login.aspx definisci lo user "ciao"

    Sub LoginBtn_Click(Sender As Object, E As EventArgs)

    If Page.IsValid Then
    If (UserName.Text = "ciao") And (UserPass.Text = "ciao") Then
    FormsAuthentication.RedirectFromLoginPage(UserName .Text, True)

    Else
    Msg.Text = "Invalid Credentials: Please try again"
    End If
    End If

    End Sub

  3. #3
    Utente di HTML.it L'avatar di tyson69
    Registrato dal
    Jan 2005
    Messaggi
    154
    ...grazie luca proverò senz'altro la tua soluzione;
    la struttura è così composta:

    root
    pubbliche.aspx
    admn
    login.aspx
    protetta1.aspx
    protetta2.aspx

    dimmi una cosa
    name=".ASPXAUTH"
    è il nome della form nella pagina login .aspx?

    ed inoltre nelle pagine protette io verificavo l'utente con:
    If User.Identity.IsAuthenticated Then
    outMessagge.InnerHtml = "Autenticato"
    Else
    outMessagge.InnerHtml = "non autenticato"
    end if
    ed ora? mi sfugge qualcosa...

    Grazie in anticipo!

  4. #4
    name=".ASPXAUTH"
    puoi chiamarlo come ti pare
    name=".PIPPO"

    (probabilmente se non lo definisci viene comunque denominato di default ASPXAUTH)

    è semplicemente il nome del coockie che viene scritto sul client una volta autenticato (di modo che non debba ri-autenticarsi ad ogni successiva richiesta)

    Lascia login.aspx nella directory principale
    non c'è alcun motivo per metterlo in amdn o qualsivoglia altra subdir

    si opera sulle subidr come vedi utilizzando la sezione <location> del web.config

    la verifica dell'utente si può fare in diversi modi
    si possono definire user e password nel config per poi verificarne le credenziali in login.aspx

    io ti ho semplicemente proposto di fare il tutto in login.aspx

    comunque si equivalgono e puoi tranquillamente continuare ad utilizzare l'altro sistema

    il tuo problema è nelle directory: lascia tutto nella root ed indica la gestione delle autorizz. sulle diverse subdir. con <location> (e senza inserire "/")

    <location path="admn">

    vedrai che così funziona

    ciao

  5. #5
    Utente di HTML.it L'avatar di tyson69
    Registrato dal
    Jan 2005
    Messaggi
    154
    6 1 grande!!
    un paio di cose....per i posteri:

    <forms name=".ASPXAUTH".... è riferito al nome della form della pagina login

    l' attributo cookieless="UseDeviceProfile" non me lo accetta e mi restituisce 'Attributo 'cookieless' non riconosciuto' per cui l'ho soppresso VVoVe:

    per il resto tutto ok!

    per la mia applicazione questo è + che sufficiente, ho visto inoltre che posso utilizzare +
    <location path="admn">
    <system.web>
    <authorization>
    <deny users="?"/>
    <allow users="pippo"/>
    </authorization>
    </system.web>
    </location>
    o eventualmente i roles...

    ma per una piattaforma multiutenza con utenti su db qual'è il tuo consiglio su come procedere?

    Ciao e grazie ancora!

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    l'errore era dovuto al fatto che forse non hai creato una dir virtuale in IIS.

    aspxauth mi sa che e' il nome del cookie che crea la classe FormsAuthentication..

  7. #7
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    aspxauth mi sa che e' il nome del cookie che crea la classe FormsAuthentication..
    Si esatto.

  8. #8
    Utente di HTML.it L'avatar di tyson69
    Registrato dal
    Jan 2005
    Messaggi
    154
    raga quando avete ragione .... avete ragione!

  9. #9
    Utente di HTML.it L'avatar di tyson69
    Registrato dal
    Jan 2005
    Messaggi
    154
    ...ancora una cosa se me la consentite....
    quando verifico le credenziali con
    If (UserName.Text = "ciao") And (UserPass.Text = "ciao") Then
    FormsAuthentication.RedirectFromLoginPage(UserName .Text, True)
    come posso fare il redirect alla pagina admin/protetta.aspx???

    Preferirei non utilizzare sessioni, mi basterebbe un cookie...

  10. #10
    Utente di HTML.it L'avatar di tyson69
    Registrato dal
    Jan 2005
    Messaggi
    154
    dovrei avere risolto cosi:
    FormsAuthentication.SetAuthCookie(txtUsername.Valu e, True)
    Response.Redirect("/admn/protetta.aspx")
    è l'unico modo?

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.