Sie sind hier: Weblog

Benutzer aussperren mit ASP.NET Identity 2.0 RTM

Foto ,
21.03.2014 10:12:00

Seit einigen Stunden liegt die finale Version von ASP.NET Identity vor. Neben den bereits seit der BETA bekannten Möglichkeiten existiert nun auch die Option, Benutzer auszusperren, wenn zum Beispiel mehrere Login-Versuche fehlgeschlagen sind. Dazu bietet nun der UserManager folgende Methoden an:

  • GetAccessFailedCount
  • ResetAccessFailedCount
  • AccessFailed
  • SetLockoutEnabled
  • GetLockoutEnabled
  • SetLockoutEndDate
  • GetLockoutEndDate
  • IsLockedOut  // Berücksichtigt LockedOutEnabled

Zum Konfigurieren des Lockout-Verhaltens gibt es ein paar neue Eigenschaften beim UserManager:

manager.UserLockoutEnabledByDefault = true;
manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
manager.MaxFailedAccessAttemptsBeforeLockout = 5;

Um diese Möglichkeiten zu nutzen, ruft der Entwickler bei jedem fehlgeschlagenen Login-Vorgang die Methode AccessFailed mit der ID des betroffenen Benutzerkontos auf. Dies veranlasst den UserManager einen internen Zähler hochzuzählen. Überschreitet dieser Zähler die über die Eigenschaft MaxFailedAccessAttemptsBeforeLockout festgelegte Schranke, liefert IsLockedOut den Wert true, sofern für das betroffene Benutzerkonto mit SetLockoutEnabled das automatische Aussperren des Benutzers aktiviert wurde. Nach der in DefaultAccountLockoutTimeSpan angegebenen Zeitspanne, liefert IsLockedOut wieder false. Somit muss der Entwickler mit dieser Methoden prüfen, ob der jeweiligen Benutzer gesperrt ist. Nach einem erfolgreichen Login-Vorgang sollte der Entwickler darüber hinaus die Methode ResetAccessFailedCount aufrufen, um die Anzahl an fehlgeschlagenen Login-Versuchen wieder auf 0 zurückzusetzen.

Damit diese Funktionalität möglich ist, muss der vom UserManager verwendete IUserStore das neue Interface IUserLockoutStore implementieren. Die mit ASP.NET Identity ausgelieferte Standardimplementierung, welche sich auf Entity Framework abstützt, macht das.