我已经创建了注册和登录表单。两者都很完美。但是我如何通过使用SESSIONS和COOKIES识别用户登录的用户。我可以使用static class
来获取不同页面之间的数据,但是如果他关闭应用程序,我该如何检索已记录的用户数据。
有没有办法实现这个目标?
谢谢!
答案 0 :(得分:0)
我假设您需要像Skype这样的即时消息应用程序或DropBox,OneDrive或Mega等云存储应用程序。他们要求您输入一次用户名和密码,然后自动启动而不再询问用户的凭据。
他们通过将用户名和密码以加密格式存储在他们通常保存在特定用户帐户下的应用程序文件夹中的文件来实现此目的。有关详细信息,请参阅以下链接:How can I get the current user directory?
这是标准做法,因为如果他们没有输入自己的凭据,则其他用户不会自动登录您的应用。
确保在将用户名和密码或整个文件保存到磁盘之前对其进行加密,否则它可能会成为密码窃取恶意软件的简单目标。
答案 1 :(得分:0)
您应该使用用户设置来执行此操作,因为此机制隐藏了从开发人员在正确位置创建文件等所有必要的工作。它工作正常,它是为这样的东西。
您可以在“设置”选项卡上的项目属性中在Visual Studio中设计它们。确保正确选择设置类型,因为应用程序设置是只读的。
假设您必须设置UserName
和UserPassword
。然后,在您的代码中,您可以执行此操作:
if (String.IsNullOrWhitespace(Properties.Settings.Default.UserName))
{
// USER NEEDS TO LOG IN
string userName;
string password;
if (Login(out userName, out password))
{
try
{
Properties.Settings.Default.UserName = Encrypt(userName);
Properties.Settings.Default.Password = Encrypt(password);
Properties.Settings.Default.Save();
}
catch (Exception exp)
{
...
}
}
}
else
{
// USER IS ALREADY LOGGED IN
}
private bool Login(out string userName, out string password)
将是一个显示登录用户界面的方法,并在成功时返回true
或在失败时返回false
。
private string Encrypt(string input)
将是一种加密字符串的方法。