Frage

Ich habe ein Projekt, das MVC4 ausführt und eine einfache Mitgliedschaft für die Authentifizierung verwenden. Ich möchte nur einem Benutzer zulassen, sich bei einem Browser anzumelden. Um den Benutzer transparent zu machen, brauche ich einen Weg, um einen anderen authentifizierten Browser abzumelden, wenn sich ein Benutzer anmeldet, wenn sich ein Benutzer anmeldet. Dies bedeutet, wenn zwei Benutzer versuchen, dasselbe Login zu verwenden, treten sie einfach ständig ab, wodurch sehr unproduktiv.

Im Moment habe ich es eingerichtet, nur ein Benutzer zuzulassen, der sich nur einmal anmelden kann, aber wenn dieser Benutzer den Browser schließen und auf einen anderen Computer wechseln würde, werden sie 30 Minuten lang gesperrt. Ich kann dieses erstellen eine Anzahl von unnötige Unterstützungsanrufe.

Ich würde davon ausgehen, dass ich eine Art Kennung in einer Datenbank verfolgen muss, und überprüfen Sie, ob sie mit jeder Anforderung übereinstimmt, andernfalls werden sie abgemeldet. Vielleicht etwas Keks hinzufügen.

Wenn jemand eine elegante Lösung dafür hat, würde ich es freuen!

Dies ist das, was ich gerade benutze, um Benutzer nur in nur einem Login zu sperren:

login:

generasacodicetagpre.

global.asax

generasacodicetagpre.

logout:

generasacodicetagpre.

Ich hatte die Begriffssitzung verwendet und habe es entfernt. Ich versuche nicht, die Sitzung des Benutzers zu löschen, sondern ihre Autorisierung mit der Websicherheit ungültig zu machen.

War es hilfreich?

Lösung

dafür ist nichts eingebaut. Sie müssen einige Methodik alleine entwickeln. Sie würden grundsätzlich zwei Teile brauchen:

    .
  1. Einige Möglichkeit, einen angemeldeten Anwender auf Anforderungen zu verfolgen. Dies kann so einfach sein wie eine Tabelle mit einer Spalte von Benutzername, mit der Sie ermitteln können, ob dieser bestimmte Benutzername angemeldet ist. Sie müssen dies natürlich synchronisieren, und Sie müssen auch mit Ihren Anmeldungen / Logouts synchron sein, und Sie müssen auch synchron sein Speichern Sie die Sitzungs-ID für den Benutzer. Sie brauchen das für das nächste Stück:

  2. Einige Mechanismen des Entfernens der Sitzung aus dem Laden, in dem er existiert. Dies wäre am einfachsten, wenn Sie SQL-Sitzungen verwenden, da Sie die Zeile einfach von der Tabellensitzungstabelle mit der passenden ID löschen können. Es gibt keine Möglichkeit, dies direkt mit ASP.NET zu tun, sodass Sie die Datenbank direkt abfragen müssen, eine gespeicherte Prozedur verwendet, usw.

  3. Also, die allgemeine Idee wäre, dass Sie, wenn sich ein Benutzer anmeldet, ihren Benutzernamen und den Sitzungs-ID in einem Tisch oder einem anderen persistierten Speicher aufzeichnen. Wenn jemand versucht, sich anzumelden, sollten Sie diesen Speicher für den verwendeten Benutzernamen überprüfen, der versucht wird, und wenn es existiert, löschen Sie die Sitzung, die diesem entspricht. Das nächste Mal, wenn der Benutzer mit dieser Sitzung, um auf eine Seite zuzugreifen, deren Sitzungs-Cookie nicht mehr mit einer gültigen Sitzung mehr übereinstimmt, und sie werden behandelt, als ob sie angemeldet wurden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top