tôi đã ở đây tìm kiếm một giải pháp cho điều này, nhưng công nghệ hiện tại của tôi là ASP.NET MVC. Vì vậy, để giúp đỡ người khác: bạn có thể kéo dài tuổi AuthorizeAttribute
, và ghi đè OnAuthorization
phương pháp, như thế này:
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);
}
}
Lưu ý: Tôi sử dụng T4MVC để lấy Controller và Tên hành động trong đoạn code trên.
Đánh dấu tất cả bộ điều khiển có thuộc tính này ngoại trừ "AccountController
". Làm như vậy, không người dùng nào có mật khẩu đã hết hạn sẽ có thể lướt trang web.
Dưới đây là một bài tôi đã làm về đề tài này với một số điểm thưởng:
User Password Expired filter attribute in ASP.NET MVC
Nguồn
2012-05-23 20:44:02
Đó là những gì tôi làm, kết hợp với việc sử dụng thuộc tính LastPasswordChangedDate của Nhà cung cấp thành viên để xác định thời điểm hết hạn. – technophile