4 messaggi dal 21 gennaio 2006
ciao a tutti
scusate per la domanda banale (sono alle prime armi...)

Ho provato ad usare i nuovi controlli login si asp.net
tutto bello e funzionante

Ma come cavolo si fa a recuperare lo username dell'utente loggato per fare una query su un database access?

Mi spiego.
Io voglio poter estarre da una tabella di un db access tutti i record corrispondenti ad un utente il cui username (contenuto nella tabella access) è uguale allo username con cui l'utente ha effettuato il login sul sito

premetto che ho utilizzato lo strumento Web Site Administration Tool ed ho creato degli utenti il cui user ID è uguale allo username che ho nella tabella access
per fare il login sul sito ho utilizzato i controlli login di visual web developer


grazie mille
Paolo
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
shareboy <shareboy> ha scritto:
ciao a tutti
scusate per la domanda banale (sono alle prime armi...)

Ho provato ad usare i nuovi controlli login si asp.net
tutto bello e funzionante

Ma come cavolo si fa a recuperare lo username dell'utente loggato per fare una query su un database access?

utente=System.Web.HttpContext.Current.User.Identity.Name

Ciao
4 messaggi dal 21 gennaio 2006
grazie mille per la risposta.

tuttavia, so di essere veramente incapace, ma come posso usare la stringa che mi hai segnalato nel wizard per la creazione della query offerto da web develoepr express?

(intendo il query builder che parte quando configuro il AccessDataSource)

ci sono diverse opzioni (profiles, form, control, ...) e non so quale usare.

ho provatio diverse combinazioni ma senza successo...

grazie in anticipo

Paolo
23 messaggi dal 05 gennaio 2006
www.megacine.it
Crea questa funzione nel codice della pagina:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If User.Identity.IsAuthenticated Then
'NomeLogin.Text = HttpContext.Current.User.Identity.Name
'funziona anche così:
NomeLogin.Text = User.Identity.Name
Else
Response.Redirect("~/utenti/login.aspx")
End If
End Sub

nella pagina aspx metti un etichetta così:

<asp:Label ID="NomeLogin" runat="server"></asp:Label>

e metti un ControlParameter circa coì:

<asp:SqlDataSource ID="SqlDataSourceDatiUtente" runat="server" ConnectionString="<%$ ConnectionStrings:UtentiConnectionString %>"
ProviderName="<%$ ConnectionStrings:UtentiConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [clienti] WHERE ([username] = @NomeLogin)">
<SelectParameters>
<asp:ControlParameter Name="NomeLogin" ControlID="NomeLogin" PropertyName="Text"/>
</SelectParameters>
</asp:SqlDataSource>

Se vuoi nascondi la label...
Non sono pienamente sicuro che sia il modo canonico per ottenere i dati dell'utente... ma se non altro funziona

Ciao

Micky
25 messaggi dal 23 gennaio 2006
Se ad esempio l'oggetto Login ha ID Login1
allora dopo esserti loggato magari nell'evento LoggedIn basta la seguente istruzione

UserID = Login1.UserName;
4 messaggi dal 21 gennaio 2006
ciao
grazie mille

non posso fare come suggerito da PacificoC perchè l'oggetto Login si trova in una pagina diversa da quella dove ho l'AccessDataSource e Gridview .

Tuttavia ho posizionato all'inizio della pagina dove ho l'AccessDataSource e Gridview un oggetto LoginName che mi visualizza correttamente l'utente che si è loggato (nell'altra pagina):

<asp:LoginName ID="LoginName1" runat="server" />

Mi chiedevo se posso estrarre e passare l'info relativa all'utente fornita da tale oggetto come parametro per la query del mio AccessDataSource

SelectCommand="SELECT * FROM [utenti] WHERE ([username] = @username)">

sapete come posso fare?

grazie
P.
71 messaggi dal 29 novembre 2005
profile.username è accessibile da ogni pagina. natualmente l'utente deve essere loggato o devi definire un profilo per l'utente anonimo,




SqlDataSource1.SelectCommand = "select * from tabella where username='"+profile.username+"'"

oppure usi i parametri


ps: se usi l'utente anonimo le cose si complicano nel senso che non puoi + usare lo username ma devi usre lo unique-identifier associato ecc ecc
Modificato da diska il 25 gennaio 2006 20.18 -
4 messaggi dal 21 gennaio 2006
ciao Diska
grazie per l'attenzione
beh in effetti così è molto comodo

tuttavia avevo provato ma non mi funziona.
uso questi comandi (nella pagina dove voglio visualizzare i dati:

<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/spese.mdb"

SelectCommand="SELECT * FROM [utenti] WHERE ([username] = ?)">
<SelectParameters>
<asp:ProfileParameter Name="username" PropertyName="UserName" Type="String" />
</SelectParameters>
</asp:AccessDataSource>

(ovviamente poi visualizzo tutto in una GridView il cui datasource è AccessDataSource1

faccio il login in una pagina che poi mi manda in un'altra dove ho il codice sopra scritto.
L'autenticazione funziona e l'utente risulta loggato tuttavia non viene visualizzata la tabella con i dati richiesti.

Secondo te dove sbaglio?

grazie
P.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.