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?

23voto

Probieren Sie dies:

MembershipUser CurrentUser = Membership.GetUser(User.Identity.Name);
Response.Write("Benutzer-ID des aktuellen Benutzers :: " + CurrentUser.ProviderUserKey);

13voto

Ted Punkte 6988

Ist Ihr Grund dafür, bei jedem Abruf der UserId einen Datenbankaufruf zu sparen? Wenn ja, verwende ich beim Verwenden des ASP.NET MembershipProviders normalerweise entweder einen benutzerdefinierten Provider, der es mir ermöglicht, diesen Aufruf zu zwischenspeichern, oder eine Hilfsmethode, die ich zwischenspeichern kann.

Wenn Sie darüber nachdenken, es im Profil zu speichern, sehe ich nicht viel Grund dafür, insbesondere da es immer noch einen Datenbankaufruf erfordert und es, es sei denn, Sie verwenden dort einen benutzerdefinierten Profilanbieter, die zusätzliche Verarbeitung des Herausparsens der Benutzer-ID hat.

Wenn Sie sich fragen, warum sie keine GetUserId-Methode implementiert haben, liegt das einfach daran, dass Sie nicht immer garantieren können, dass diese Benutzer-ID ein GUID wie im mitgelieferten Anbieter ist.

BEARBEITEN:

Siehe ScottGu's Artikel über Anbieter, der einen Link zum Herunterladen des tatsächlichen Quellcodes für z.B. SqlMembershipProvider bereitstellt.

Aber das einfachste, was man wirklich tun kann, ist eine GetUserId()-Methode in Ihrem Benutzerobjekt oder Hilfsklasse, in der Sie die UserId aus dem Cache/der Session abrufen, andernfalls die Datenbank abfragen, sie nach Benutzername zwischenspeichern (oder in der Sitzung speichern) und zurückgeben.

Für etwas, über das Sie nachdenken sollten (aber sehr vorsichtig sein sollten wegen der Cookie-Größenbeschränkungen): Forms Auth: Membership, Roles und Profile ohne Anbieter und ohne Sitzung

4voto

GrZeCh Punkte 2292

Ich habe beschlossen, die Authentifizierung von Benutzern selbst zu schreiben (sehr einfach, aber es funktioniert) und das hätte ich schon lange tun sollen.

Meine ursprüngliche Frage bezog sich auf die Benutzer-ID und sie ist nicht verfügbar unter:

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

2voto

Jun Punkte 21

Versuchen Sie es mit dem Folgenden:

Membership.GetUser().ProviderUserKey

1voto

HamidSadeghi Punkte 49
public string GetUserID()
            {
                MembershipUser _User;
                string _UserId = "";
                _User = Membership.GetUser();
                Guid UserId = (Guid)_User.ProviderUserKey;
                return _UserId = UserId.ToString();
            }

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