我們有一個要求,如果用戶忘記了他們的密碼,他們應該要求並通過電子郵件接收忘記密碼鏈接重置他們的密碼。爲什麼我的日期比較不起作用?
我使用日期時間比較以及唯一代碼形式的令牌來確保一定的安全級別。
只要他們收到一封電子郵件鏈接重置密碼,並且用戶點擊鏈接重置密碼,用戶將看到一個屏幕重置密碼。迄今爲止,這工作非常順利。
我遇到的問題是,當用戶點擊電子郵件鏈接重置密碼超過24小時後,鏈接發送的電子郵件,他們得到一個空白頁。
我們希望用戶得到一個頁面,說:重置密碼鏈接已過期。這只是一次使用但該消息不可見。
我在做什麼錯?
下面是我使用的代碼:
If dr.HasRows Then
Dim dtCreate As DateTime = DateTime.Now
Dim dtNow As DateTime = DateTime.Now
Dim dtExp As DateTime = dtCreate.AddDays(1)
If dtNow > dtExp Then
ResetPwdPanel.Visible = False
Expired.Visible = True
Else
ResetPwdPanel.Visible = True
Expired.Visible = False
lblExpired.Text = "Reset password link has expired. It was for one time use only"
Return
End If
End If
「標記:
<form id="form1" runat="server">
<div>
<asp:Panel ID="ResetPwdPanel" runat="server" Visible="false" >
<fieldset style="width:400px">
<legend>Reset Password</legend>
<table>
<tr>
<td>New password: </td><td>
<div class="input text">
<asp:TextBox ID="txtNewPwd" style="width:150px;" TextMode="Password" runat="server"></asp:TextBox></div><br />
<asp:RequiredFieldValidator ID="rfvNewPwd" runat="server"
ControlToValidate="txtNewPwd" Display="Dynamic"
ErrorMessage="Please enter new password" ForeColor="Red" SetFocusOnError="True"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>Confirm Passsword: </td><td>
<div class="input text">
<asp:TextBox ID="txtConfirmPwd" style="width:150px;" TextMode="Password" runat="server"></asp:TextBox></div><br />
<asp:RequiredFieldValidator ID="rfvConfirmPwd" runat="server"
ControlToValidate="txtConfirmPwd" Display="Dynamic"
ErrorMessage="Please re-enter password to confirm" ForeColor="Red"
SetFocusOnError="True"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="cmvConfirmPwd" runat="server"
ControlToCompare="txtNewPwd" ControlToValidate="txtConfirmPwd"
Display="Dynamic" ErrorMessage="Password didn't match" ForeColor="Red"
SetFocusOnError="True"></asp:CompareValidator>
</td>
</tr>
<tr>
<td>
</td><td>
<asp:Button ID="btnChangePwd" runat="server" Text="Change Password"
onclick="btnChangePwd_Click" /></td>
</tr>
<tr>
<td colspan="2">
<asp:Label ID="lblStatus" runat="server" Text=""></asp:Label>
</td>
</tr>
</table>
</fieldset>
</asp:Panel>
<asp:panel ID="Expired" runat="server">
<asp:Label ID="lblExpired" runat="server" Text="" style="color: #FF0000"></asp:Label></asp:panel>
我們有兩個面板控件。一個顯示重置密碼控制(這工作),而另一個顯示重置密碼鏈接到期消息(這不起作用)。
一個空白的屏幕是不是非常有幫助做
Equal or =
這樣
。總是有更多的信息。在IIS日誌記錄中,使用F12工具進行交互式調試。採取第一步來解決你的問題,並看看'空白屏幕'的結果 –
@Tairoc:如果你添加了一個.aspx的代碼片段來顯示你的面板的標記,以及它們的父控件(如果有的話),這可能會有所幫助。另外,通過「空白頁面」,你的意思是一個沒有任何*內容的白屏,或者你的意思是過期消息是不可見的? –
'dtNow> dtExp'永遠不會是真的基於您的代碼 –