确定密码是由用户键入的还是自动填充的

本文关键字:填充 密码 用户 | 更新日期: 2023-09-27 18:26:30

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

当用户键入他/她的用户名时,如果他以前登录过,密码框将自动填充。若用户以前并没有登录或更改过密码,他需要自己填写密码框。

当应用程序自动填充密码框时,密码框中的星号数与实际密码的计数相等,如果密码的长度不够,则很容易猜测实际密码。

我知道我可以用假字符填充密码框,但当我想检查密码时,我不知道密码框中的字符是假的或是用户键入的。

防止此问题的最简单方法是什么?

确定密码是由用户键入的还是自动填充的

string password = //take it from dataBase or the source where you save it.
string addStars = "******";
InitialPassowrd = true;
PasswordTxt.Text = password + addStars;

之后,当您使用PasswordTxt.登录文本:

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