Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473

    ASP.NET - VB -Control Login

    Ciao a tutti,
    sto cercando di capire come sfruttare al meglio asp.net (ho sempre programmato in asp e php).
    Dunque ho visto che con asp.net ora è possbile usare il controllo login senza dover scrivere tanto codice.
    Io dovrei fare una pagina con un login dove i vari utenti sono salvati su un db sql server.
    1) Vorrei un esempio su come usare il controllo login e su come interrogare il mio db sql server.
    2) Vorrei capire in che modo funziona il login, io prima con asp salvavo il login in una session e poi sulle pagine riservate controllavo se la sessione esisteva oppure no. Mi è stato detto che ora con questo controllo non serve più impostare ed usare la session, e allora mi chiedo una volta effettuato il login, se vado su una pagina riservata come posspo controllare se si è loggati oppure no?

    Uso visual studio 2010 come editor e il linguaggio preferito è vb.net e non c#

    Grazie in anticipo!

    Ultima modifica di djciko; 04-04-2014 a 00:52

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    L'argomento di autenticazione ed autorizzazione e' molto vasto ed offre tanti modi di riconoscere ed autorizzare gli utenti.

    Inizio a risponderti sul punto 2. In Asp.Net è presente -in tutti i progetti web- un file denominato "Web.Config" dove ci sono i settaggi che riguardano la tua applicazione web.

    In questo file c'e' la possibilita' di scrivere le regole.
    Se hai un'area riservata (ad esempio una cartella "amministrazione" per te ed altri admin, ed una cartella "registrazione" per far accedere tutti), hai la possibilita' di specificare:

    codice:
    <configuration>
    
    <!-- Aut. negata per cartella "amministrazione" per utenti non riconosciuti tranne "androita" -->
    <location path="amministrazione">
     <system.web>
     <authorization>
        <deny users ="?" /> 
        <allow users ="androita" />
     </authorization>
    </system.web>
    </location>
    
    <!-- Autorizzazione concessa per cartella "registrazione" per utenti non ancora registrati -->
    <location path="registrazione">
     <system.web>
     <authorization>       
        <allow users ="*" />
     </authorization>
    </system.web>
    </location>
    
     <system.web>
       <authentication mode="Forms" >
         <forms loginUrl="Autenticazione.aspx"></forms>
       </authentication>
    
       <!-- Autorizzazione negata per utenti non riconosciuti: valido per tutta l'applicazione -->
       <authorization>
        <deny users="?" /> 
       </authorization>
      </system.web>
    
    </configuration>


    in questo modo non avrai bisogno di controllare la sessione pagina per pagina, ma puoi definirlo a livello globale (oppure puoi usare il il settaggio <location path> anche con le pagine, non le cartelle, ad esempio <location path="carrello.aspx"> con autorizzazione negata per gli utenti non loggati).

    Per l'uso del controllo Login guarda questo articolo:
    http://www.html.it/pag/16660/i-contr...utenticazione/

    (l'articolo, nella parte denominata "Aree protette nell'applicazione" affronta l'argomento che ho riassunto io qui)

    Per riassumere la risposta al punto 1 in due parole, Asp.Net ha un sistema interno per accedere ad una tabella che si chiama "aspnet_users" del database "ASPNETDB" creato in automatico.

    Ovviamente hai la possibilita' di customizzare il tutto (compresi i ruoli, tipo "guest", "admin", "utenteregistrato"), ma devi studiare un po'
    Ultima modifica di djciko; 07-04-2014 a 12:40

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    Grazie mille!
    mi hai tolto un bel po di dubbi. La cosa infatti che mi interessava capire, era se potevo abilitare l'accesso a delle cartelle a determinati utenti.
    Nell'applicazione che dovrò creare avrò un bel po di utenti e ogni utente avra una cartella riservata dove all'interno potrà creare delle sotto cartelle e carcare dei file. Ovviamente questi file sono dati sensibili e devono essere ben protetti in modo tale che solo l'utente che li ha caricati ed l'utente admin possano entrare.

    Domanda: e' possibile impostare l'autorizzazione delle cartelle in modo dinamico?
    Mi spiego meglio per ogni utente che si regitra il prohgramma crea una cartella con un nome casuale (stringhe + numeri). il nome della cartella viene salavto sul mio db nell'anagrafica utenti.
    Posso tramite uno script di impostare in modo automatico che nella cartella "dsfsd9f0" può entrare solo l'utente pippo e admin, oppure per ogni utente devo mettere mano io al file web.conf?

    Un ultima curiosità, se creao una parte dell'applicazione dove potranno accedere solo chi si è registrato al sito (usrer + admin) nel file web.conf cosa dovrò impostare al posto di <allow users ="androita" />???


    Grazie mille per i consigli.

    Scusa se chiedo tutte queste cose che possono essere banali, ma prima di iniziare a scrivere codice su codice vorrei capire bene tutto.

    Grazieee

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    se creo una parte dell'applicazione dove potranno accedere solo chi si è registrato al sito (usrer + admin) nel file web.conf cosa dovrò impostare al posto di <allow users ="androita" /> ?
    basta eliminare : <allow users = "androita" /> e lasciare soltanto <deny users="?" />

    per NON permettere a chi non è loggato di entrare in quel percorso. (ma comunque è GIA' protetta dallo stesso settaggio fatto al livello di tutta l'applicazione, l'esempio che avevo fatto io era per farti capire che puoi permettere ad UN utente specifico di entrare, tranne gli altri).


    -----
    Per l'altra domanda,

    Ovviamente questi file sono dati sensibili e devono essere ben protetti in modo tale che solo l'utente che li ha caricati ed l'utente admin possano entrare.
    credo che basti:

    1) generare i file che riguardano l'utente con un nome complesso (tipo "nomecartella"+"password utente"+"numero random".pdf).


    2) elencare tramite le istruzioni che vanno sul file system, i files contenuti nella cartella generata per l'utente ("dsfsd9f0") e permettere quindi il download/visione soltanto a sè stesso.


    3) bloccare l'esplorazione directory da IIS in modo da non permettere agli utenti di scrivere nell'URL alcun percorso e di visionarne il contenuto.

    -----

    Una cosa sicura è che devi creare una cartella superiore a tutte le altre generate dinamicamente, con la restrizione soltanto a quelli registrati (e magari un ruolo concesso), tutto cio' sempre tramite <location path> e <allow> e <deny>.


    Una soluzione che ho adottato io e' di scrivere i files NEL DATABASE, in un campo Varbinary, e NON nel file system del server.

    Ultima modifica di djciko; 04-04-2014 a 13:01

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    ok grazie per la risposta.

    Per il primo punto purtroppo il nome dei files devono mantenere il nome originale...

    Mentre il secondo punto

    2) elencare tramite le istruzioni che vanno sul file system, i files contenuti nella cartella generata per l'utente ("dsfsd9f0") e permettere quindi il download/visione soltanto a sè stesso.
    Intendi che posso indicare nel file system (sarebbe il web.conf o un altro) in modo dinamico, per ogni file caricato, i vari permessi?

    L'appilcazione praticamente avrà n utenti dove ognuno potrà fare upload dei file nella propria cartella, a me interessa esser sicuro che nessun altro utente (tranne gli admin) possa visionare o scaricare i file di un altro utente.


    3) bloccare l'esplorazione directory da IIS in modo da non permettere agli utenti di scrivere nell'URL alcun percorso e di visionarne il contenuto.
    Penso che questo sia già sufficente ad esser sicuri che nessun altro utente scarichi file di altri, giusto?

    Una cosa sicura è che devi creare una cartella superiore a tutte le altre generate dinamicamente, con la restrizione soltanto a quelli registrati (e magari un ruolo concesso), tutto cio' sempre tramite <location path> e <allow> e <deny>.
    Sisi avevo idea di fare proprio così


    Grazieee

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Quote Originariamente inviata da androita Visualizza il messaggio
    Intendi che posso indicare nel file system (sarebbe il web.conf o un altro) in modo dinamico, per ogni file caricato, i vari permessi?

    no, intendo le classi del Framework che vanno sull'hard disk (il namespace è System.IO) del server e prendono i nomi dei files contenuti in una directory.


    ad es.
    codice:
    Imports System.IO
    
    
    Public Sub TuaSub()
    
    Dim di As DirectoryInfo = New DirectoryInfo("C:\inetpub\wwwroot\mia_applicazione\dsfsd9f0\")
    
    If di.Exists Then
     For Each fi As FileInfo In di.GetFiles()
      Response.Write(fi.Name & "<br />") ' oppure crei un link al file
     Next
    End if
    
    End Sub

    se il nome della cartella è scritto nel Database non dovresti avere difficolta' a fare cosi'

    per il blocco dell'esplorazione, si, almeno ti rassicuri che gli utenti non possano accedere alle cartelle scrivendo un indirizzo nella barra dell'URL.
    Ultima modifica di djciko; 04-04-2014 a 14:55

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    A ok perfetto, più semplice di quello che avevo capito.
    L'esempio che mi hai scritto lo avevo già usato in passato, dunque ora dovrei avere tutto il materiale necessario per poter fare l'applicazione.
    Ora devo solo capire bene questo nuovo metodo di login integrato in asp.net e poi posso iniziare.

    Se per caso hai degli esempi su come usare il controllo login con un db sql express sarebbe perfetto... ho provato a cercare, ma anche sulla guida che mi hai indicato prima non parla di un collegamento a nessun db e mi rende un po perplesso su come fa a controllare se il login è corretto oppure no...

    Grazie mille sei stato molto gentile!!!!

    Ciaooo

  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    il login per default si connette al db 'Aspnetdb'.
    Devi studiarti la customizzazione del tutto per farlo andare su un altro.

    oppure usa semplicemente una tua form di login al posto del controllo.
    leggi questo articolo, con un po' di pazienza capirai tutto.

    http://www.asp.net/web-forms/tutoria...hentication-vb
    Ultima modifica di djciko; 05-04-2014 a 12:27

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    Grazie per il link, spiega bene proprio tutto. Lunedì mi metto al lavoro!
    Si, io userei il mio login e non il controllo, solo che mi hanno detto che usare le sessioni in asp.net non va più bene anche perchè ogni tanto non funzionano più bene, ed allora mi hanno consigiato di usare il controllo login.

    Ovvio che se usassi il mio form per il login e le session, è una cosa che so già fare e non ho problemi.

    Secondo te mi hanno detto cavolate oppure è meglio usare il control login?
    Ultima modifica di androita; 05-04-2014 a 12:58

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Ma guarda che non sono combinazioni obbligate, tua form e session o controllo login e non session.

    Se usi la FormsAuthentication puoi usare le tecnologie descritte sopra, (il web.config con i settaggi).
    Il controllo login è un aiuto che usa chi vuole rapidità nello sviluppo, ma le comodità si pagano e quindi devi studiarti come cambiare il suo comportamento preimpostato (db, tabella).
    La scelta è tua, ma dimentica la session per queste cose. Non si usa più questa tecnica, da eoni

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.