存储下次程序启动的用户凭据

时间:2014-05-09 08:46:06

标签: c# login remember-me

这里有个问题。我有一个程序,当它启动时会弹出loginForm对话框。现在在这个loginForm上我添加了一个rememberMe(onthoudMij)按钮。因此,如果用户选择此框登录,关闭程序然后再次打开它,他的用户凭证将已填写。

这是我的loginButton代码。

private void loginButton_Click(object sender, EventArgs e)
{
    try
    {
        var sr = new System.IO.StreamReader("C:\\" + inlogNaamTextbox.Text + "\\Login.txt");
        gebruikersnaam = sr.ReadLine();
        passwoord = sr.ReadLine();
        sr.Close();

        if (gebruikersnaam == inlogNaamTextbox.Text && passwoord == inlogPasswoordTextbox.Text)
        {
            classUsername.name = inlogNaamTextbox.Text;

            MessageBox.Show("Je bent nu ingelogd!", "Succes!");
            this.Dispose();
        }
        else
        {
            MessageBox.Show("Gebruikersnaam of wachtwoord fout!", "Fout!");
        }
    }
    catch (System.IO.DirectoryNotFoundException ex)
    {
        MessageBox.Show("De gebruiker bestaat niet!", "Fout!");
    }
}

现在我的问题是:

我在网上搜索了关于记住我实现的选项,但是他们总是使用SQL数据库等。我只有一个存储用户名&您可以在代码中看到txt文件中的密码。

问题是......

所以我的问题不是;我怎样才能实现这个记住我的复选框?我已经知道我应该使用System.Net,但是如果没有sql数据库或类似的东西,还有什么可以工作呢?

1 个答案:

答案 0 :(得分:0)

如果您的问题是保存部分,您可以使用类似3DES加密的方法来保存用户名和密码。

您可以使用当前代码并添加类似于此SO文章中的内容来加密和解密密码:How to implement Triple DES in C# (complete example)

如果问题只是如何阅读/保存?

我会创建一个文本,如下所示:

private void CallOnFormLoad()
{
    string[] allLines = File.ReadAllLines(@"C:\passwordfile.txt");

    if (allLines.Length > 1)
    {
        // at least one 2 lines:
        inlogNaamTextbox.Text = allLines[0];
        inlogPasswoordTextbox.Text = allLines[1];
    }
}

private void loginButton_Click(object sender, EventArgs e)
{
    try
    {
        var sr = new System.IO.StreamReader("C:\\" + inlogNaamTextbox.Text + "\\Login.txt");
        gebruikersnaam = sr.ReadLine();
        passwoord = sr.ReadLine();
        sr.Close();

        if (gebruikersnaam == inlogNaamTextbox.Text && passwoord == inlogPasswoordTextbox.Text)
        {
            classUsername.name = inlogNaamTextbox.Text;

            MessageBox.Show("Je bent nu ingelogd!", "Succes!");

            File.WriteAllLines(@"C:\passwordfile.txt", string.Format("{0}\n{1}", inlogNaamTextbox.Text, inlogPasswoordTextbox.Text))

            // Don't call Dispose!
            // this.Dispose();
        }
        else
        {
            MessageBox.Show("Gebruikersnaam of wachtwoord fout!", "Fout!");
        }
    }
    catch (System.IO.DirectoryNotFoundException ex)
    {
        MessageBox.Show("De gebruiker bestaat niet!", "Fout!");
    }
}