2010-12-09 3 views
0

Ich habe eine ASP.NET MVC-Anwendung, die den ASP.NET-Standardmitgliedschaftsanbieter verwenden.Blockieren des Zugriffs auf die Anwendung für einen Benutzer

Mein Kunde wollte eine Funktion implementieren, die Benutzer daran hindert, sich anzumelden (z. B. für Benutzer, die zurücktreten und das Unternehmen verlassen).

Ich kann das IsApproved-Flag der Mitgliedschaftstabelle nicht verwenden, da dieses Feld verwendet wird, um Benutzerregistrierung zu bestätigen.

Gibt es dafür eingebaute Funktionen? Was sind deine Erfahrungen in solchen Szenarien?

+0

Verwenden Sie Kontosperrungen? –

+0

@adrift: Nein. Kann ich sie für meine Anforderung verwenden? – Lorenzo

+0

Ja, wenn IsLockedOut wahr ist, kann sich ein Benutzer erst anmelden, wenn die Sperre aufgehoben wurde. –

Antwort

1

Da Sie keine Kontosperrungen verwenden, können Sie hierfür das Flag IsLockedOut verwenden. Wenn IsLockedOuttrue ist, kann sich ein Benutzer erst anmelden, wenn er gelöscht wurde. Weitere Informationen zur Verwendung dieser Eigenschaft finden Sie unter MembershipUser.IsLockedOut.

Wenn Sie mit IsLockedOut für dies zu vermeiden, und vorausgesetzt, Sie die SqlMembershipProvider verwenden, wäre eine weitere Option, direkt das Verfahren zu ändern, die der Provider während des Anmeldevorgangs ruft: aspnet_Membership_GetPasswordWithFormat.

Wenn Sie den Code für das Verfahren überprüfen, werden Sie feststellen, dass, wenn der Benutzer nicht existiert, oder gesperrt ist, es gibt ein Nicht-Null-Ergebnis:

IF (@UserId IS NULL) 
    RETURN 1 

IF (@IsLockedOut = 1) 
    RETURN 99 

Sie könnten die Liste halten von blockierten Benutzern in einer separaten Tabelle und überprüfen Sie es hier. Der Nachteil ist, dass diese Änderungen verloren gehen können, wenn diese Prozedur jemals neu erstellt wird oder die Site in eine neue Mitgliedschaftsdatenbank wechselt.

Zwischen diesen beiden Optionen würde ich wählen IsLockedOut, aber ich dachte, ich würde eine weitere Option hinzufügen, falls es eine starke Präferenz gegen die Verwendung dieser Art gab.

HTH

+0

Sie haben definitiv Recht. Die beste Option ist, eine 'LockUser'-Methode in meiner Service-Schicht zu programmieren, die expressionell versuchen würde, eines der Szenarien zu verursachen, die im Abschnitt Anmerkungen [hier] dargestellt sind (http://msdn.microsoft.com/en-us/). Bibliothek/system.web.security.membershipuser.islockedout.aspx). Danke fürs Helfen! – Lorenzo

Verwandte Themen