Es gibt keine Möglichkeit, eine Sitzung von ‚außen‘ die Sitzung zu verlassen. Sie müssten die Datenbank bei jedem Laden der Seite überprüfen, und wenn das Konto deaktiviert wurde, dann melden Sie sich ab. Sie könnten dies auch mit einem HttpModule erreichen, was die Dinge etwas sauberer machen würde.
Zum Beispiel:
public class UserCheckModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += new EventHandler(OnPreRequestHandlerExecute);
}
public void Dispose() {}
private void OnPreRequestHandlerExecute(object sender, EventArgs e)
{
// Get the user (though the method below is probably incorrect)
// The basic idea is to get the user record using a user key
// stored in the session (such as the user id).
MembershipUser user = Membership.GetUser(Guid.Parse(HttpContext.Current.Session["guid"]));
// Ensure user is valid
if (!user.IsApproved)
{
HttpContext.Current.Session.Abandon();
FormsAuthentication.SignOut();
HttpContext.Current.Response.Redirect("~/Login.aspx?AccountDisabled");
}
}
}
Dies ist kein vollständiges Beispiel, und das Verfahren zur Bestimmung der Benutzer das Abrufen eines Schlüssels in der Sitzung angepasst werden müssen gespeichert ist, aber das sollte Ihnen den Einstieg. Bei jedem Laden der Seite wird eine zusätzliche Datenbankprüfung durchgeführt, um zu überprüfen, ob das Benutzerkonto noch aktiv ist. Es gibt jedoch keine andere Möglichkeit, diese Informationen zu überprüfen.
Ist dies nicht nur für die aktuelle Benutzersitzung? Ich möchte die Sitzung eines anderen Benutzers verlassen ... Etwas wie Session (Benutzer) .Abandon. – Testing123
@ Testing123 egrunin bedeutet, dass jeder Benutzer prüfen würde, ob sein eigenes Konto ungültig ist, wenn dies der Fall ist, würde die Anwendung ihr Cookie entfernen. – guanome
Downvote, weil Sie FormsAuthentication.SignOut() benötigen; – Juan