0

我在 aspnet_Membership 表中添加了一个名为“ForgotPasswordDate”的新列。当用户点击密码恢复控件中的提交按钮时,它将使用 getDate() 方法将用户点击按钮的时间存储到“ForgotPasswordDate”列中。

之后,用户将收到一封电子邮件,其中包含将他们定向到 ChangePassword.apsx 的 URL。

我想让 ChangePassword.aspx 页面在用户请求新密码 1 天后过期。这将通过使用“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 表中的新列吗?

4

1 回答 1

0

我会找出成员使用的存储过程,修改并包含新列。然后,您可能必须覆盖当前的成员资格类以包含新属性。

于 2012-07-21T11:03:14.783 回答