Aplikacja lokalna (C#) i baza też lokalna (MS SQL). Firma jest wielodziałowa. Natomiast mnie na razie interesuje tylko mój oddział. Do aplikacji będzie mieć dostęp około 15 osób. Raczej nie chcę tworzyć loginów w bazie dla każdego użytkownika bo znając życie i tak wszyscy będą jechali na jednym logowaniu aż się przez przypadek komuś komputer wyłączy (firma pracuje 24/dobę).
Najprawdopodobniej dla "przyzwoitości" założę tabele z loginami dla pracowników natomiast zastanawiam się co zrobić z hasłem które potrzebuje do połączenia z bazą (w connectionString).
Robilem próby z kodowaniem i wg mnie całkiem sympatycznie to działało.
Byte[] pwBytes = Convert.FromBase64String(Properties.Settings.Default.Login_password);
try
{
Byte[] decryptedPw = ProtectedData.Unprotect(pwBytes, entropy, DataProtectionScope.LocalMachine);
string pw = Encoding.Unicode.GetString(decryptedPw);
MessageBox.Show(pw);
}
Rozszerzając nieco problem zastanawiam się gdzie podstawiać hasło i wybór padł na settings.cs
public override object this[string propertyName]
{
get
{
if (propertyName == "BazaTestowaConnectionString")
{
string returnValue = null;
ConnectionStringSettings settings =
ConfigurationManager.ConnectionStrings["WindowsFormsApplication1.Properties.Settings.BazaTestowaConnectionString"];
SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder(settings.ConnectionString);
connectionStringBuilder.UserID = "Zoritt";
connectionStringBuilder.Password = "haslo";
if (settings != null)
returnValue = connectionStringBuilder.ToString();
return returnValue;
}
return base[propertyName];
}
set
{
base[propertyName] = value;
}
}
Ponieważ c# i ms sql to moje nowe zabawki cały czas mam dylematy co gdzie powinno być :-)
Pozdrawiam,
Zoritt