Ich habe hier auf der Suche nach einer Lösung für dieses, aber meine aktuelle Technologie ist ASP.NET MVC. Also, um anderen zu helfen: Sie können erweitern die AuthorizeAttribute
und außer Kraft setzen OnAuthorization
Methode, etwa so:
public class ExpiredPasswordAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
IPrincipal user = filterContext.HttpContext.User;
if(user != null && user.Identity.IsAuthenticated)
{
MembershipUser membershipUser = Membership.GetUser();
if (PasswordExpired) // Your logic to check if password is expired...
{
filterContext.HttpContext.Response.Redirect(
string.Format("~/{0}/{1}?{2}", MVC.SGAccount.Name, MVC.SGAccount.ActionNames.ChangePassword,
"reason=expired"));
}
}
base.OnAuthorization(filterContext);
}
}
Anmerkung: Ich verwende T4MVC um die Controller- und Action-Namen im obigen Code abzurufen.
Markieren Sie alle Controller mit diesem Attribut außer " AccountController
". Auf diese Weise kann kein Benutzer mit einem abgelaufenen Passwort auf der Website surfen.
Hier ist ein Beitrag, den ich zu diesem Thema verfasst habe, mit einigen Bonuspunkten:
Filterattribut "Benutzerkennwort abgelaufen" in ASP.NET MVC