winform 응용 프로그램과 일부 웹 서비스에 대한 로그인 목록이 있습니다. 확인되면 나는 암호화 된 비밀번호와 함께 파일에 사전을 직렬화,하지만 그런 일 또는하지를 할 수있는 가장 좋은 방법이 있는지 궁금해 '나를 기억'.. 다음은 내 코드winform 응용 프로그램에서 로그인을 저장하는 방법은 무엇입니까?
public void LoginsInit()
{
FileStream file = new FileStream(loginsFilePath, FileMode.OpenOrCreate);
try
{
BinaryFormatter formatter = new BinaryFormatter();
loginsDictionary = (Dictionary<string, string>)formatter.Deserialize(file);
string[] allusers = loginsDictionary.Keys.ToArray();
int usersCount = allusers.Length;
userNameTextBox.Text = allusers[usersCount - 1];
}
catch (SerializationException ex)
{
loginsDictionary = new Dictionary<string, string>();
Console.WriteLine("Failed to open file: " + ex.Message);
}
finally
{
file.Close();
}
}
private void login_Click(object sender, EventArgs e)
{
//LoginToService();
string username;
string password;
username = serviceClientReference.UserLogin = userNameTextBox.Text;
password = serviceClientReference.Password = EncryptDecrypt.Encrypt(this.passwordTextBox.Text, EncryptDecrypt.c_strEncryptkey1, EncryptDecrypt.c_strEncryptkey2);
if (rememberMe.Checked)
{
if (loginsDictionary.ContainsKey(username))
loginsDictionary[username] = password;
else
loginsDictionary.Add(username, password);
}
FileStream file = new FileStream(loginsFilePath, FileMode.Create);
try
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(file, loginsDictionary);
file.Flush();
}
catch (SerializationException ex)
{
Console.WriteLine("Failed to open file: " + ex.Message);
}
finally
{
file.Close();
}
string errorStr;
int errorNo;
try
{
bool res = serviceClientReference.EstablishConnection(out errorStr, out errorNo);
if (!res)
{
MessageBox.Show(errorStr);
}
}
catch (Exception exception)
{
Logger.Log(TraceLevel.Error, "", exception);
MessageBox.Show("Fatal Error Unable to login to MU");
}
}
private void usernameTextBox_TextChanged(object sender, EventArgs e)
{
if (loginsDictionary.ContainsKey(userNameTextBox.Text))
passwordTextBox.Text = EncryptDecrypt.Decrypt(loginsDictionary[userNameTextBox.Text], EncryptDecrypt.c_strEncryptkey1, EncryptDecrypt.c_strEncryptkey2);
}
나를 기억하는 기능이 시간이 지남에 따라 양호합니까 (응용 프로그램을 닫고 다시 열 때) 또는 응용 프로그램의 현재 기능에 대한 것입니까? – CertifiedCrazy
시간이 지남에 좋습니다. LoginsInit()가 intance 생성시에 호출되어 저장된 파일에서 dictoinary를 인스턴스화합니다 – mustafabar