これに対する解決策を探してここに来ましたが、現在のテクノロジは ASP.NET MVC です。他の人を助けるために、次のようにAuthorizeAttribute
, and overrideOnAuthorization
メソッドを拡張できます。
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);
}
}
注:上記のコードでは、 T4MVCを使用してコントローラーとアクションの名前を取得しています。
" " を除くすべてのコントローラーをこの属性でマークしますAccountController
。そうすることで、有効期限が切れたパスワードを持つユーザーはサイトを閲覧できなくなります。
これは、いくつかのボーナスポイントを付けて、この件に関して私が行った投稿です。
ASP.NET MVC のユーザー パスワード期限切れフィルター属性