View Full Version : Database su web server... come filtare in base a utente?
Ho messo su un server IIS e tramite front page ho creato una connessione ad un database.
Ora l'accesso al sito che riporta il contenuto del database è protetto tramite user e password.
Volevo invece fare un passo ulteriore, ovvero filtrare l'elenco del database mostrato in base al nome utente che si è loggato.
Il database è molto semplice, una serie di dati da visualizzare. Ho aggiunto come campo un campo chiamato "Utente" nel quale ho inserito il nome dell'utente , che una volta loggato, ha il diritto di vedere quel dato.
La mia idea era di filtrare tramite query il database da visualizzare, impostando come condizione che lo USERNAME usato per autenticarsi (autenticazione su IIS quindi tramite user name e password di windows nt)
Tipo SELECT * FROM tabella WHERE utente = ' <???? USER NAME LOGGATO ??? >'
mad_hhatter
15-11-2006, 15:04
Ho messo su un server IIS e tramite front page ho creato una connessione ad un database.
Ora l'accesso al sito che riporta il contenuto del database è protetto tramite user e password.
Volevo invece fare un passo ulteriore, ovvero filtrare l'elenco del database mostrato in base al nome utente che si è loggato.
Il database è molto semplice, una serie di dati da visualizzare. Ho aggiunto come campo un campo chiamato "Utente" nel quale ho inserito il nome dell'utente , che una volta loggato, ha il diritto di vedere quel dato.
La mia idea era di filtrare tramite query il database da visualizzare, impostando come condizione che lo USERNAME usato per autenticarsi (autenticazione su IIS quindi tramite user name e password di windows nt)
Tipo SELECT * FROM tabella WHERE utente = ' <???? USER NAME LOGGATO ??? >'
questa soluzione funziona solo a condizione che ogni record sia visualizzabile da un solo utente. appena hai la necessità di far vedere lo stesso record a piu utenti la cosa non funziona più.
ora, per quel che so un dbms permette una gestione dei permessi a livello di tabella, non di singoli record (ma qui bisognerebbe sentire qualcuno di più esperto). quindi la soluzione potrebbe essere estendere il metodo da te seguito: invece di associare un record a un utente devi mettere un campo che riferisce una tabella esterna in cui ci sono record che memorizzano associazioni record-utente.
hai ragione, infatti stò pensado di fare una seconda tabella, contenente gli user name e il relativo codice che puo visualizzare sulla seconda tabella, in modo che posso filtrare la tabella in base a questa. Il problema è che non riesco ancora a capire come avere passare la variabile utente loggato alla query in .asp (fp_Qry="SELECT ...." )
mad_hhatter
16-11-2006, 20:32
qui purtroppo non ti so aiutare, mi dispiace
se non ricordo male tra le SERVER VARIABLES della Request ci dovrebbe esser anche la USERNAME o qualcosa del genere.
si ho trovato.
request.servervariables("AUTH_NAME")
Infatti facendo poi una response.write mi dà esattamente il nome utente registrato.
Il problema è...... ho usato frontpage per fare in fretta la pagina, e mi ha messo l'interrogazione database con la sua funzione. Ma nonostante abbia creato una variabile utente contentente lo username dalla request di prima, non riesco a passarla alla query, ogni volta che la cambio frontpage mi dice "il contenuto di un componente è stato cambiato" e mo lo sostituisce. La cosa funziona perchè, modificando il codice asp con worpad, mi ha funzionato. Solo che usando frontpage ogni volta mi segnala questo e mi toglie la modifica fatta a mano!!!
Nello specifico, ho una querty cosi:
Fp_Sqry="SELECT * FROM tabella Where utente = '" & utente & "' "
avendo specificato nella variabile utente la request.
Cosi funziona, ma appeno apro frontpage me la modifica in:
Fp_Sqry="SELECT * FROM tabella Where utente = '::utente' "
E cosi non funziona!!!!
Cazzarola!!!! Non ditemi di cambiare editor perchè al lavoro ho solo questo :( e non ho voglia di fare tutto con wordpad
si ho trovato.
request.servervariables("AUTH_NAME")
Infatti facendo poi una response.write mi dà esattamente il nome utente registrato.
Il problema è...... ho usato frontpage per fare in fretta la pagina, e mi ha messo l'interrogazione database con la sua funzione. Ma nonostante abbia creato una variabile utente contentente lo username dalla request di prima, non riesco a passarla alla query, ogni volta che la cambio frontpage mi dice "il contenuto di un componente è stato cambiato" e mo lo sostituisce. La cosa funziona perchè, modificando il codice asp con worpad, mi ha funzionato. Solo che usando frontpage ogni volta mi segnala questo e mi toglie la modifica fatta a mano!!!
Nello specifico, ho una querty cosi:
Fp_Sqry="SELECT * FROM tabella Where utente = '" & utente & "' "
avendo specificato nella variabile utente la request.
Cosi funziona, ma appeno apro frontpage me la modifica in:
Fp_Sqry="SELECT * FROM tabella Where utente = '::utente' "
E cosi non funziona!!!!
Cazzarola!!!! Non ditemi di cambiare editor perchè al lavoro ho solo questo :( e non ho voglia di fare tutto con wordpad
Cambia editor e fai tutto con wordpad :D
Altrimenti inserisci il codice asp in un altro file che includerai nel primo così ti risolvi il problema di frontpage.
Risolto... vabbè... mi sono riscritto la connessione al db e l'output della query in .asp senza usare quel cavolo di webbot di frontpage. Ora funziona tutto alla perfezione e l'ho messo online, filtrando in automatico i dati in base all'utente connesso :cool:
mad_hhatter
17-11-2006, 14:56
il filtraggio in automatico come lo fai?
il filtraggio in automatico come lo fai?
Mi son creato una variabile utente contenente l'utente autentificato:
utente = request.servervariables("AUTH_USER")
Poi l'ho usata nella query:
SELECT * FROM tabella WHERE utente like '" & utente & "'"
Nel mio caso ho due tabelle, una contentente i dati con abbinato un codice cliente, l'altra conenente i nomi utenti e abbinato il codice che possono visualizzare. In questo modo faccio una Inner join e visualizzo i dati che mi interessano.
SELECT * FROM tabella INNER JOIN privilegi ON privilegi.idcliente=tabella.idcliente WHERE privilegi.utente like '" & utente & "'"
Esempio.
Tabella "privilegi"
utente--idcliente
pippo 1
pippo 2
pluto 3
Tabella "tabella"
idcliente dati.....
1 ....
1 ...
2.....
2 .....
3....
Nel mio caso, se si logga l'utente PIPPO vedrà i dati dei clienti 1 e 2, l'utente pluto solo il 3 e cosi via .
mad_hhatter
17-11-2006, 20:00
ah ok, come avevamo discusso in precedenza. pensavo avessi trovato un altro modo per farlo.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.