我在aspnet_Membership表中添加了一个名为“ForgotPasswordDate”的新列。当用户点击密码恢复控制中的提交按钮时,它会使用getDate()方法将用户点击按钮的时间存储到“ForgotPasswordDate”列中。
之后,用户将收到一封电子邮件,其中包含指向ChangePassword.apsx的URL。
我希望在用户请求新密码的1天后使ChangePassword.aspx页面过期。这可以通过使用“ForgotPasswordDate”列中的时间并使用AddDay()方法来完成。
然而,代码给了我一个问题。我认为他们无法识别Membership表中的“ForgotPasswordDate”列。
这是有错误的代码:
if (DateTime.Now < user.ForgotPasswordDate.AddMinutes(3))
出于测试目的,目前我只将逻辑设置为3分钟。
错误信息是:
System.Web.Security.MembershipUser' does not contain a definition for 'ForgotPasswordDate' and no extension method 'ForgotPasswordDate' accepting a first argument of type 'System.Web.Security.MembershipUser' could be found (are you missing a using directive or an assembly reference?
以下是整个代码:
protected void Page_Load(object sender, EventArgs e)
{
//if the id is in the query string
if (!string.IsNullOrEmpty(Request.QueryString["ID"]))
{
//store the user id
Guid userId = new Guid(Request.QueryString["ID"]);
//attempt to get the user's information
MembershipUser user = Membership.GetUser(userId);
if (DateTime.Now < user.ForgotPasswordDate.AddMinutes(3)) //here is the part
{
//Page not expire yet.
hidden.Text = user.ProviderUserKey.ToString();
Server.Transfer("~/ChangePassword.aspx");
}
else
{
//Expired; direct to Page Expired Page
Server.Transfer("~/PageExpired.aspx");
}
}
}
无论如何,系统可以识别aspnet_membership表中的新列吗?
答案 0 :(得分:0)
我会找出成员使用哪个存储过程,修改并包含新列。然后,您可能必须覆盖当前的成员资格类以包含新属性。