2 Stimmen

Wie man ProviderUserKey verwaltet, wenn man den Membership Provider anpasst

Ich überschreibe den asp.net Membership Provider mit meinem benutzerdefinierten Membership Provider. Ich würde gerne wissen, welchen Typ ich für meinen ProviderUserKey in meinem Benutzermodell setzen muss?

Ich habe das versucht:

public class User
{
    [Key]
    public ????? ProviderUserKey { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public string Email { get; set; }
    public string PasswordQuestion { get; set; }
    ...
}

Ich weiß nicht, wie ich einen neuen Wert für ProviderUserKey generieren kann, wenn ich einen neuen Benutzer erstelle. Irgendwelche Ideen?

2voto

Josh Darnell Punkte 11125

Gemäß dem virtuellen Eigentum sollte es sein

public Object ProviderUserKey { get; set; }

Für Ihre erste Frage:

Ich würde gerne wissen, welchen Typ ich für mein ProviderUserKey in meinem Benutzermodell festlegen muss?

Von der MSDN-Seite zur MembershipUser-Klasse:

Der Typ des Identifikators hängt vom MembershipProvider oder dem MembershipUser ab. Im Fall des SqlMembershipProvider kann der ProviderUserKey als Guid gecastet werden, da der SqlMembershipProvider den Benutzeridentifikator als UniqueIdentifier speichert.

Also hängt es davon ab, wie Sie den Benutzeridentifikator speichern (als int / guid / varchar usw.). Sie geben ihn als Object ein, gießen ihn jedoch basierend auf Ihrer Implementierung in den richtigen Datentyp.

Und Ihre zweite Frage:

Ich weiß nicht, wie ich einen neuen ProviderUserKey-Wert generieren kann, wenn ich einen neuen Benutzer erstelle. Irgendwelche Ideen?

Wenn Sie den neuen Benutzer erstellen und ihn zu dem hinzufügen, in dem Sie ihn speichern (relationale Datenbank, XML-Datei usw.), rufen Sie den durch diesen Prozess generierten eindeutigen Identifikator ab. Wenn Sie zu diesem Zeitpunkt keinen eindeutigen Benutzeridentifikator generieren... sollten Sie das tun =)

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