密码在用户控件中可见 ext.net



用户控件(ascx(与密码输入。右键单击,检查 - 该值可见。如果密码输入在 aspx 中,则不会发生这种情况。

嗯,看来我必须在这里添加一些漫谈,因为由于"主要是代码",该平台不允许我发布此线程。

默认.aspx

<%@ Page Language="C#" %>
<%@ Register Src="UserPassword.ascx" TagName="UserPass" TagPrefix="uc" %>
<script runat="server">
protected void Page_Load( object sender, EventArgs e )
{
if ( !X.IsAjaxRequest )
{
this.BindUser();
}
}
public void BindUser()
{
userPass1.UserName = "AliBaba";
userPass1.Password = "OpenSesame";
}
</script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Password inspect bug</title>
</head>
<body>
<form id="form1" runat="server">
<ext:ResourceManager runat="server" />
<ext:Window
ID="Window1"
runat="server"
Icon="User"
Closable="false"
Title="Customer Details"
Width="350"
Height="230"
Resizable="false"
BodyStyle="background-color:#fff;"
BodyPadding="5"
Layout="Anchor">
<Items>
<ext:Panel ID="panel1" runat="server" Header="false" Layout="FitLayout">
<Content>
<uc:UserPass ID="userPass1" runat="server"></uc:UserPass>
</Content>
</ext:Panel>
</Items>
</ext:Window>
</form>
</body>
</html>

UserPassword.ascx

<%@ Control Language="C#" %>
<script runat="server">
public string UserName
{
get { return this.txtUser.Text; }
set { this.txtUser.Text = value; }
}
public string Password
{
get { return this.txtPassword.Text; }
set { this.txtPassword.Text = value; }
}
</script>
<ext:Panel ID="panel1" runat="server" BodyPadding="5" Layout="AnchorLayout">
<Items>
<ext:Panel ID="panel2" runat="server" Border="false" Header="false" AnchorHorizontal="100%" Layout="FormLayout">
<Items>
<ext:TextField ID="txtUser" runat="server" FieldLabel="User" />
<ext:TextField ID="txtPassword" runat="server" FieldLabel="Password" InputType="Password" />
</Items>
</ext:Panel>
</Items>
</ext:Panel>

是否有任何已知的解决方法?

简短的回答:使用this.txtPassword.setValue(value)而不是this.txtPassword.Text = value来解决您的直接问题。

长答案:为什么要从服务器设置密码?最佳实践指出,密码作为哈希存储在服务器上,因此您实际上并不知道用户的真实密码,您只是比较两个哈希。

public string Password
{
get { return this.txtPassword.Text; }
set { this.txtPassword.Text = value; }
}

如果你想自动填充一个密码,我假设你这样做,你需要使用一个cookie。

if (Request.Cookies["username"] != null)
{
this.txtUsername.setValue(Request.Cookies["uid"].Value);
this.txtPassword.setValue(Request.Cookies["pwd"].Value);
}

最新更新