C# 保存以前用户登录信息的正确方法
我的wpf应用程序有一个登录屏幕。登录屏幕由一个包含人员集合的组合框组成。我目前实现了一个文件夹目录和文本文件,在初始化时创建(如果第一次登录),一旦文件夹和文件存在,它将读取文件,并根据保存的值,从人员集合中加载正确的用户 我的问题是这是最理想的方式吗?我想知道有没有更好的方法,我觉得这是一种非常古老的方法。任何提示都将不胜感激 例如,如果John Smith登录-下次John启动应用程序时,他的名字将自动成为C# 保存以前用户登录信息的正确方法,c#,wpf,C#,Wpf,我的wpf应用程序有一个登录屏幕。登录屏幕由一个包含人员集合的组合框组成。我目前实现了一个文件夹目录和文本文件,在初始化时创建(如果第一次登录),一旦文件夹和文件存在,它将读取文件,并根据保存的值,从人员集合中加载正确的用户 我的问题是这是最理想的方式吗?我想知道有没有更好的方法,我觉得这是一种非常古老的方法。任何提示都将不胜感激 例如,如果John Smith登录-下次John启动应用程序时,他的名字将自动成为SelectedItem public void CacheInitialize()
SelectedItem
public void CacheInitialize()
{
var folderDirectory = System.AppDomain.CurrentDomain.BaseDirectory + "Cache";
var fileName = "UserCache.txt";
var fileDirectory = folderDirectory + "\\" + fileName;
if (!Directory.Exists(folderDirectory))
{
Directory.CreateDirectory(folderDirectory);
}
if (!File.Exists(fileDirectory))
{
File.WriteAllText(Path.Combine(folderDirectory, fileName), string.Empty);
return;
}
else
{
var filecontent = File.ReadAllText(Path.Combine(folderDirectory, fileName));
if (filecontent != string.Empty)
SelectedUser = Users.First(x => x.Id == int.Parse(filecontent));
}
}
public void CacheSave()
{
var folderDirectory = AppDomain.CurrentDomain.BaseDirectory + "Cache";
var fileName = "cache file3.txt";
var fileDirectory = folderDirectory + "\\" + fileName;
StreamWriter writer = new StreamWriter(fileDirectory);
writer.Write(SelectedUser.Id.ToString());
writer.Close();
}
创建新文件没有任何优势,尤其是在非格式化文本格式中。我将使用
App.config
保存这些值:
public void CacheInitialize()
{
string lastLogin = ConfigurationManager.AppSettings["LastLogin"];
if (String.IsNullOrEmpty(lastLogin)) return;
int userId;
if (!int.TryParse(lastLogin, out userId))
throw new ArgumentException("LastLogin is not an integer.");
SelectedUser = Users.First(x => x.Id == userId);
}
public void CacheSave()
{
Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (configuration.AppSettings.Settings["LastLogin"] == null)
configuration.AppSettings.Settings.Add("LastLogin", SelectedUser.Id.ToString());
else
configuration.AppSettings.Settings["LastLogin"].Value = SelectedUser.Id.ToString();
configuration.Save();
ConfigurationManager.RefreshSection("appSettings");
}
请小心使用此代码:
SelectedUser = Users.First(x => x.Id == int.Parse());
请记住,最终用户可以替换文件中的值,并且在没有适当身份验证的情况下,他不应作为另一个用户访问应用程序。我的直接答案是使用某种事务数据库。这个文件在自找麻烦!我猜这真的取决于应用程序的使用环境以及人们如何与之联系。这有用吗?你好@Yeldar,很好的方法,谢谢你提供关于访问文件和编辑的额外提示。