webentwicklung-frage-antwort-db.com.de

Rufen Sie die ID der aktuellen Benutzer-ASP.NET-Mitgliedschaft ab

Wie können Sie die ID des aktuellen Benutzers mithilfe des ASP.NET-Mitgliedschaftsanbieters abrufen? Meine Anwendung ist eine MVC 3-Anwendung, die den Database First-Ansatz verwendet. Daher habe ich eine eigene Datenbank erstellt, und der Membership Provider und der Rollenanbieter verwenden meine Tabellen (Benutzerdefinierter Mitglieder- und Rollenanbieter).

Auf einer meiner Seiten (Feedback) kann der Benutzer Feedback zu meiner Website senden. Wenn er verbunden ist, möchte ich beim Einfügen die Benutzer-ID in die Tabelle aufnehmen.

Da die ASP.NET-Mitgliedschaft jedoch eine IIdentity ist, kann ich nur auf den Namen zugreifen. Ich möchte keine Verknüpfung zwischen zwei Tabellen mit dem Namen erstellen, ich möchte die ID!

Also, was machen Sie in Ihrer Anwendung für diese sehr einfache Aufgabe? Ich meine, auf fast jeder Seite, auf der ein verbundener Benutzer einen Wert eingeben muss, benötigen wir die ID des Benutzers, um den richtigen Fremdschlüssel für die Benutzertabelle zu erstellen, oder? Ich bin übrigens sehr neu in diesem MVC-Framework, bevor ich ASP.NET aspx verwendete, und für die Benutzerinformationen habe ich die Session verwendet, die mir die aktuelle ID, den Namen und andere Felder nach Bedarf gab. Da diese Implementierung mit dem Session-Objekt Probleme beim Shared Hosting verursacht hat, möchte ich die echte Mitgliedschaft verwenden.

Vielen Dank!

EDIT

Die ID, die ich möchte, muss eine ganze Zahl sein (in der Tat möchte ich das UserID-Feld, das sich in der User-Tabelle befindet).

11

Versuche dies;

MembershipUser mu = Membership.GetUser("username");
string userId = mu.ProviderUserKey.ToString();

Für den aktuell angemeldeten Benutzer können Sie verwenden, ohne den Benutzernamen zu übergeben.

string userId = Membership.GetUser().ProviderUserKey.ToString();
30
Kaf

Ich wollte mitteilen, wie man die UserId for Identity 2.0 erhält:

string UserId = System.Web.HttpContext.Current.User.Identity.GetUserId();
4
JoshYates1980

Ich bin auf ein ähnliches Problem gestoßen. Ich habe (auch aus anderen Gründen) eine Basis-Controller-Klasse erstellt, von der alle meine anderen Controller geerbt wurden. Sie können festlegen, dass die Basisklasse die Benutzerinformationen jederzeit zur Verwendung speichert.

0
IronMan84

vorausgesetzt, Sie haben in Ihrer web.config alles für Ihren Provider korrekt konfiguriert, und da Sie den Benutzernamen erhalten können, empfehle ich Folgendes:

Dim muser As MembershipUser = Membership.GetUser(userName)

Hier sind Details zum MembershipUser-Objekt: http://msdn.Microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28SYSTEM.WEB.SECURITY.MEMBERSHIPUSER%29; % 22.NETFRAMEWORK% 2cVERSION% 3dV4.0% 22% 29; k% 28DevLang-VB% 29 & rd = true

viele andere Eigenschaften als Name verfügbar. Das gewünschte ID-Feld heißt 'ProviderUserKey'

0
Frank Thomas

Könnte das sein, was Sie danach machen?

userid von asp.net Membership Authentication?

Persönlich habe ich meine eigene Klasse, die das Abrufen dieser Details durch den Benutzernamen sowie alle benutzerdefinierten Daten, die ich in meiner Anwendung benötige, enthält.

Grüße

0
Beats

Um die aktuelle Benutzer-ID zu erhalten, können Sie Folgendes versuchen

string currentUserId= Convert.ToString(Membership.GetUser().ProviderUserKey);
0
juhi