确定密码是由用户键入还是自动填写?

时间:2014-10-15 08:22:29

标签: c#

我正在开发桌面应用程序。我使用Windows域用户登录应用程序。我有一个登录表单,记住我复选框。

当用户输入他/她的用户名并且如果之前登录时,密码框会自动填写。如果用户之前没有登录或更改了密码,他需要自己填写密码框。

当应用程序自动填写密码框时,密码框中的星号数等于实际密码的数量,如果密码的长度不够,则可以轻松猜出实际情况密码。

我知道我可以用假字符填写密码框,但是当我想检查密码时,我不知道密码框中的字符是假的还是用户打字的。

阻止此问题的最简单方式是什么?

1 个答案:

答案 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;
}