2012-07-21 21 views
0

我在名爲「ForgotPasswordDate」的新列中添加了aspnet_Membership表。當用戶點擊密碼恢復控制中的提交按鈕時,它將通過使用getDate()方法將用戶點擊該按鈕的時間存儲到「ForgotPasswordDate」列中。在aspnet_Membership表中找不到新列

之後,用戶將收到包含一個URL,指示他們到ChangePassword.apsx電子郵件。

我想使爲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表來識別新列?

回答

0

我會找出哪些存儲過程的成員使用,修改和包括新的列。然後,您可能必須重寫當前的成員資格類以包含新的屬性。