In meiner Anwendung verwende ich die Formularauthentifizierung zum Anmelden und Abmelden von Benutzern.Wie erzwinge Logout-Benutzer, wenn sein/ihr Benutzername von einem anderen Benutzer geändert wird?
Eine Funktionalität ist Admin kann den Benutzernamen anderer Benutzer ändern. In diesem Fall muss ich den Benutzer abmelden, dessen Benutzername geändert wurde.
Wenn ich nicht, aufgrund ihrer Cookies zuvor, erhalten sie Zugriff auf die Anwendung und erhalten Fehlermeldungen (da ihren Benutzernamen nicht existiert und es gibt Teile, wo ich ihren Benutzernamen für einige Funktionen verwenden).
Wie kann ich diese Benutzer zwingen, sich mit Formularauthentifizierung abzumelden?
UPDATE:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string controller = filterContext.RouteData.Values["controller"].ToString();
string action = filterContext.RouteData.Values["action"].ToString(); ;
// Below returns the previous username, which does not exist anymore in db.
string userName = HttpContext.Current.User.Identity.Name;
UnitOfWork unitOfWork = new UnitOfWork();
if (!unitOfWork.UserRepository.UserExists(userName))
{
FormsAuthentication.SignOut();
filterContext.HttpContext.Session.Clear();
filterContext.HttpContext.Session.Abandon();
// I am not using Roles.
}
unitOfWork.Dispose();
base.OnActionExecuting(filterContext);
}
In meinem Kunden globale Filter, überprüfe ich, ob Benutzer existiert oder nicht, wenn nicht ich sie abzumelden. Es funktioniert jedoch nicht. Mit der Arbeit meine ich, dass sie die Authentifizierung bestehen und Zugang zur Anwendung erhalten.
Vielen Dank im Voraus.
Ich denke, das meldet den angemeldeten Benutzer ab. Ich möchte andere Benutzer abmelden, deren Passwort von admin geändert wurde. Nun, ich kann diesen Code natürlich verwenden, um diesen Benutzer zu signieren, aber wie kann ich das Passwort ändern? Mit anderen Worten, wenn diese Methode aufgerufen werden soll? –
Froh, dass der Code, den ich zur Verfügung stellte, hilfreich war. Um Ihre zusätzliche Frage zu beantworten, lesen Sie bitte das Update in meiner Antwort. –
Nochmals vielen Dank. Ich verwende Ihren Code in meinem benutzerdefinierten ActionFilterAttribute-Filter. Dort überprüfe ich, ob der Benutzername existiert oder nicht, wenn dies nicht der Fall ist (diese Bedingung ist erfüllt, wenn ich meinen eigenen Benutzernamen ändere), unterzeichne ich den Benutzer. Das Problem besteht jedoch weiterhin. Der Cookie des Nutzers bleibt und er erhält Zugriff auf die Anwendung. Irgendwelche Ideen ? Ich habe meine Frage mit Filtercode aktualisiert. –