我正在使用登录表单的网站上工作。要登录,回发将用于代码隐藏中的OnClick处理程序 不知何故,从用户名和密码文本框的Text-property返回的值是我输入的值的十倍,用逗号分隔。我检查了我的整个代码是否有双ID(这似乎是导致此行为的最常见问题),但我发现每个ID只定义一次。
在ASPX文件中,我有这个:
<asp:Label ID="lblFeedback" ForeColor="Red" Font-Bold="true" runat="server" Visible="false" /><br />
<asp:Panel ID="pnlLogin" runat="server">
<table style="border-style: none;">
<tr>
<td>
<asp:Label ID="lblUsername" AssociatedControlID="txtUsername" runat="server" />
</td>
<td>
<asp:TextBox ID="txtUsername" runat="server" /><br />
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblPassword" AssociatedControlID="txtPassword" runat="server" />
</td>
<td>
<asp:TextBox ID="txtPassword" runat="server" TextMode="password" /><br />
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button ID="btnLogin" OnClick="btnLogin_Click" runat="server" />
</td>
</tr>
</table>
</asp:Panel>
Codebehind中的OnClick处理程序:
protected void btnLogin_Click(object sender, EventArgs e)
{
string username = Util.Escape(txtUsername.Text);
string password = Util.Escape(txtPassword.Text);
WebsiteUser user = WebsiteUser.Create(username, password);
if (user != null)
{
//Set some session variables and redirect to user profile
}
else
{
lblFeedback.Text = Localizer.Translate("INVALID_LOGIN");
lblFeedback.ForeColor = Color.Red;
lblFeedback.Visible = true;
pnlLogin.Visible = true;
}
}
该网站在ISS 5.1(Win XP Pro)上的ASP.NET 2.0上运行
答案 0 :(得分:0)
代码看起来都还可以。我会考虑的一些事情是你的Util.Escape函数。如果您担心恶意入侵,可以使用HttpServerUtility.HtmlDecode。你也可以使用asp:login控件,因为它提供了你感兴趣的所有功能。