我创建了一个登录表单应用程序,表单有两个文本框,一个接受用户名,另一个接受密码,用户名和密码已经存储在一个名为“Registered.txt”的文本文件中,表单也有一个按钮如果用户点击使用随机访问文件登录,我希望我的程序能够读取“Registered.txt”文件以检查输入的密码或用户名是否有效。
答案 0 :(得分:0)
首先,正如Edi G.在评论中提到的那样 - 将用户名和密码存储在纯文本文件中是一个非常糟糕的主意。这种方法的安全性绝对为零。
但如果你还想尝试 - 这里有一些指导。
要从文件中读取文本数据,您需要创建指向文件的FileStream
,并StreamReader
从该流中读取。
using (var fs = new FileStream(@"path_to_your_file\Registered.txt", FileMode.Open))
{
using (var reader = new StreamReader(fs))
{
var line = reader.ReadLine();
while (line != null)
{
// do your checks here
line = reader.ReadLine();
}
}
}
答案 1 :(得分:0)
我举一个例子,希望它可以帮助你得到你想要的东西。
在此示例中,您的Registered.txt文件应如下所示: Smartsasse,MYPASSWORD OlofBoll,P @提供ssword
//var path = @"C:\Registered.txt";
var path = "Registered.txt";
var allLines = System.IO.File.ReadAllLines(path);
var userInfo = allLines.Select(l => l.Split(',')).Select(s => new
{
Username = s[0],
Password = s[1]
}).ToList();
var user = userInfo.FirstOrDefault(ui => ui.Username.ToLowerInvariant() == this.UserNameTextBox.Text.Trim().ToLowerInvarant());
if (user != null && user.Password == this.PasswordTextBox)
{
// Login is okay
this.ViewState["loggedInUser"] = user.Username;
}
else
{
// Show error message
throw new Exception("Couldn't login, invalid username or password.");
}
您需要通过“using System.Linq;”引用“System.Linq”。如果没有,您可以将部分代码更改为:
bool success = false;
foreach (var line in allLines)
{
var username = line.Split(',')[0];
var password = line.Split(',')[1];
if (username == this.UserNameTextBox.Text && password == this.PasswordTextBox.Text)
{
// Login
// this.ViewState["loggedInUser"] = user.Username;
success = true;
break;
}
}
if (success == false)
{
// Show error
throw new Exception("Couldn't login, invalid username or password.");
}
此代码不仅仅是自行运行,而是可以帮助您获得所需内容。