我正在开发桌面应用程序。我使用Windows域用户登录应用程序。我有一个登录表单,记住我复选框。
当用户输入他/她的用户名并且如果之前登录时,密码框会自动填写。如果用户之前没有登录或更改了密码,他需要自己填写密码框。
当应用程序自动填写密码框时,密码框中的星号数等于实际密码的数量,如果密码的长度不够,则可以轻松猜出实际情况密码。
我知道我可以用假字符填写密码框,但是当我想检查密码时,我不知道密码框中的字符是假的还是用户打字的。
阻止此问题的最简单方式是什么?
答案 0 :(得分:2)
string password = //take it from dataBase or the source where you save it.
string addStars = "******";
InitialPassowrd = true;
PasswordTxt.Text = password + addStars;
之后当你拿着PasswordTxt.Text登录时:
string password = PasswordTxt.Text;
string formatPass = password.Substring(0, password.Length - addStars.Length);
这是我能想到的最简单的方法。
EDIT
:
对于用户更改密码以及如何检查密码的情况:
默认情况下,创建一个属性InitialPassowrd
或类似的内容false
。如果用户已选中保存密码,则将此属性设置为true并添加星标。之后,您将OnTextChanged="PasswordTxt_TextChanged"
上的事件处理程序添加到PasswordTxt。
代码背后:
protected void PasswordTxt_TextChanged(object sender, EventArgs e)
{
InitialPassword = false;
}
最后,当你进行记录时:
string password = "";
if(InitialPassword)
{
password = PasswordTxt.Text;
password = password.Substring(0, password.Length - addStars.Length);
}
else
{
password = PasswordTxt.Text;
}