用TextMode = Password分配数据库到文本框的值
我有一个asp:TextBox
和TextMode = "Password"
,当我需要输入时它的工作正常。 我的文本框:用TextMode = Password分配数据库到文本框的值
<asp:TextBox ID="Txt_NovaSenha" runat="server" TextMode="Password" Width="170px"></asp:TextBox>
但现在我需要从数据库中获取的密码,并将其分配给TextBox.Text,如:
DataSet ds = forza.BuscaDadosCadastrais(Session["login"].ToString());
foreach (DataRow row in ds.Tables[0].Rows)
{
TxtNome.Text = row["nome"].ToString();
TxtEmail.Text = row["email"].ToString();
TxtLogin.Text = row["login"].ToString();
string aux = crip.DescriptografaString(row["senha"].ToString());
Txt_SenhaAtual.Text = aux;
Txt_SenhaAtual.TextMode = TextBoxMode.Password;
}
但是,当它与TextMode = Password
。该文本框变空。
当我删除这部分,它工作正常...
有没有办法解决它?
你将不得不以编程方式更改文本模式,就像这样:
Me.Txt_NovaSenha.TextMode = TextBoxMode.SingleLine
Me.Txt_NovaSenha.Text = "test"
但是,当然,这违背了密码模式的目的。从安全的角度来看,您的密码应该是散列且不可恢复的。想想你如何使用电子邮件网站工作。如果你忘记了密码,他们不会给你,他们让你重置它。这是因为密码被散列并且不能(不应该)被散列。
如果您只是希望有水印,可以使用ajaxcontrol工具包。
<ajax:TextBoxWatermarkExtender ID="TextBoxWatermarkExtender1" runat="server" TargetControlID="Txt_NovaSenha" WatermarkText="****">
</ajax:TextBoxWatermarkExtender>
<asp:TextBox ID="Txt_NovaSenha" runat="server" TextMode="Password" Width="170px"></asp:TextBox>
只要确保你下载和包括该工具包DLL(http://ajaxcontroltoolkit.codeplex.com/)
BUt我不想显示密码的值,我想继续显示'****'。 – Ghaleon 2013-03-05 17:47:52
您的问题表明您想要将Textbox.text分配给密码值。现在你说你想保持这样的状态:****请详细说明你正在做什么,因为我很困惑。 – jason 2013-03-05 17:51:40
我说的是,我有这些为我的textobx分配一个值: 'Textbox1.Text = row [“login”]。ToString()'如果'TextMode = Password'打开,文本框始终为空,我问是否有办法显示值,即使使用'textmode = password'。 – Ghaleon 2013-03-05 17:55:32
根据场景...
// don't use an asp textbox
<input type="password" value="<asp:Literal id="passwordText" runat="server" />" />
,或作为更复杂的解决方案,解析出站HTML查找输入元素并用实际密码替换空字符串。
您不必在“编辑注册数据”表单中将密码值从数据库分配到密码文本框,用户无法以任何方式查看密码文本,为什么要显示它?
当用户编辑他们的数据时,编辑窗体中的密码和确认密码文本框应该显示为空。
如果用户想编辑/更改他们现有的密码,他们只需输入并确认,并保存;在保存IF用户输入密码时,您将用新密码替换现有密码。
如果用户不想编辑/更改他们的密码他们不要输入一个,保存时不会替换现有的密码。
除了密码外,您可以将所有其他数据从用户数据库中完全可以看到。
你应该/可以从代码中删除这些行:
string aux = crip.DescriptografaString(row["senha"].ToString());
Txt_SenhaAtual.Text = aux;
Txt_SenhaAtual.TextMode = TextBoxMode.Password;
供您参考下面的答案解释了为什么ASP。用的TextMode =“密码”文本框中NET上回发空,你怎么能强制文本值将被发送回浏览器:
您不必在所有显示的密码。在您的编辑用户页面,你可以告诉他们这样伪密码(不实际的密码更换asteriks,因为他们可以,如果你查看浏览器页面源中可以看出)
Txt_SenhaAtual.Attributes.Add(value,"******");
Set the textmode of the textbox as "Password".
当用户输入/更新密码时,他们仍然会看到“*”。您可以包含一个确认密码文本框&比较更新时的2个值。
为什么你会自动填充密码? – 2013-03-05 17:43:57
@BradM我有一个“编辑注册数据”,可以编辑姓名,密码,电子邮件等......并且我从数据库中提取一些这些数据,所以如果他只需要编辑名称,那么密码已经存在,他不需要输入它只是为了编辑名字......如果他想编辑密码,它已经存在,他只需要键入新密码。或者你认为它是一种不好的做法? – Ghaleon 2013-03-05 17:46:46
在数据库中存储未加密的密码是一种可怕的做法。向用户发送密码只会增加伤害。 – 2013-03-05 17:50:08