17 Stimmen

Wie kann ich auf die UserId in ASP.NET Membership zugreifen, ohne Membership.GetUser() zu verwenden?

Wie kann ich auf UserId in ASP.NET Membership zugreifen, ohne Membership.GetUser(username) in einem ASP.NET Webanwendungsprojekt zu verwenden?

Kann UserId neben UserName (System.Web.Profile.ProfileBase) im Profile-Namensraum enthalten sein?

0voto

Andrew Myhre Punkte 1394

Sie haben hier zwei Möglichkeiten:

1) Verwenden Sie den Benutzernamen als Primärschlüssel für Ihre Benutzertabelle d.h.:

select * from [dbo.User] where Username = 'andrew.myhre'

2) Fügen Sie die UserID zum Profil hinzu.

Es gibt Vor- und Nachteile für jede Methode. Persönlich bevorzuge ich die erste, weil ich damit nicht unbedingt den Standardprofilanbieter einrichten muss und ich in meinen Systemen sowieso eindeutige Benutzernamen durchsetzen möchte.

0voto

Ted Punkte 6988

Andrew: Ich würde vorsichtig sein, eine Abfrage wie die, die du gezeigt hast, zu machen, denn standardmäßig gibt es kein Index, der dazu passt, also besteht das Risiko eines vollständigen Tabellenscans. Darüber hinaus, wenn du deine Benutzerdatenbank für mehr als eine Anwendung nutzt, hast du die Anwendungs-ID nicht eingeschlossen.

Der nächstgelegene Index ist aspnet_Users_Index, der die ApplicationId und den LoweredUserName erfordert.

BEARBEITEN:

Oops - habe Andrews Beitrag noch einmal gelesen und er führt kein select * auf der aspnet_Users-Tabelle durch, sondern eine benutzerdefinierte Profil-/Benutzertabelle, wobei der Benutzername als Primärschlüssel verwendet wird.

0voto

technophile Punkte 3496

Hast du versucht, System.Web.HttpContext.Current.User.Identity.Name zu verwenden? (Stelle sicher, dass User und Identity zuerst nicht null sind.)

0voto

{
MembershipUser m = Membership.GetUser();
Response.Write("ID: " + m.ProviderUserKey.ToString());
}

Gibt die UserID (uniqueidentifier) für den aktuellen Benutzer aus der aspnet_Membership-Tabelle zurück, vorausgesetzt, der Benutzer hat sich erfolgreich angemeldet. Wenn Sie versuchen, <%= %> oder diesen Wert vor einer erfolgreichen Authentifizierung zuzuweisen, wird der Fehler "Objektverweis wurde nicht auf eine Objektinstanz festgelegt" angezeigt.

http://www.tek-tips.com/viewthread.cfm?qid=1169200&page=1

0voto

Maysam Punkte 7014

Ich hatte dieses Problem, die Lösung liegt in der web.config-Konfiguration, versuchen Sie die web.config mit folgendem zu konfigurieren:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X