...
Wie setze ich das Passwort für die PasswortBox?
Die Passwortbox erlaubt aus Sicherheitsgründen kein Binding auf die Eigenschaft im ViewModel. Daher ist das Passwort in der Codebehind-Datei (.xaml.cs) zu setzen.
Codeblock | ||||
---|---|---|---|---|
| ||||
<PasswordBox Name="PasswordBox" Grid.Row="2" Grid.Column="1" PasswordChanged="PasswordBox_PasswordChanged"/> |
Codeblock | ||||
---|---|---|---|---|
| ||||
public partial class MySettingControl: UserControl
{
public MySettingControl(string a_sSettings)
{
InitializeComponent();
var oViewModel = new MySettingControlViewModel(a_sSettings);
DataContext = oViewModel;
//Passwortbox erlaubt keine Bindings, daher hier setzen.
PasswordBox.Password = new NetworkCredential(string.Empty, oViewModel.Password).Password;
} |
Wie aktualisiere ich das Passwort in meinem ViewModel?
...
Um nun das Passwort im ViewModel zu aktualisieren, muss auf das PasswordChanged-Event der PasswordBox zurückgegriffen werden. Das Changed-Event implementieren Sie wiederum in der CodeBehind:
Codeblock | ||||
---|---|---|---|---|
| ||||
public partial class MySettingControl: UserControl
{
private void PasswordBox_PasswordChanged(object sender, System.Windows.RoutedEventArgs e)
{
var oViewModel = DataContext as MySettingControlViewModel;
if (oViewModel == null)
return;
oViewModel.Password = PasswordBox.SecurePassword;
}
|
Passwort verschlüsseln / hashen
Geben Sie das Passwort nicht im Klartext an das WMS, sondern hashen oder verschlüsseln Sie es, beim Serialisieren Ihrer Einstellungsdaten
Beispiele (u.a. TDES):
- Microsoft Api: system.security.cryptography.tripledes
- Microsoft Api: system.security.cryptography.tripledescryptoserviceprovider
- https://www.codeproject.com/Articles/1278566/Simple-AES-Encryption-using-Csharp
- Microsoft Api: system.security.cryptography.sha256
- https://www.c-sharpcorner.com/article/hashing-passwords-in-net-core-with-tips/