|
|
@@ -315,19 +315,17 @@ public partial class MainWindow : Window
|
|
|
{
|
|
|
var deviceKey = GetDevicePasswordKey(device);
|
|
|
var savedPassword = _passwordStoreService.LoadPassword(deviceKey);
|
|
|
- var password = string.Empty;
|
|
|
- if (!string.IsNullOrWhiteSpace(savedPassword))
|
|
|
+ var passwordConfirmed = TryPromptForPassword(device, savedPassword, out var password, out var clearSavedPasswordRequested);
|
|
|
+
|
|
|
+ if (clearSavedPasswordRequested)
|
|
|
{
|
|
|
- password = savedPassword;
|
|
|
+ _passwordStoreService.ClearPassword(deviceKey);
|
|
|
}
|
|
|
- else if (!TryPromptForPassword(device, out savedPassword))
|
|
|
+
|
|
|
+ if (!passwordConfirmed)
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- password = savedPassword;
|
|
|
- }
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(password))
|
|
|
{
|
|
|
@@ -348,7 +346,11 @@ public partial class MainWindow : Window
|
|
|
var result = await _serverApiService.CheckHealthAsync(baseAddress, password, selectedAdapter?.IPv4Address ?? string.Empty);
|
|
|
if (result.Success)
|
|
|
{
|
|
|
- SavePasswordForDevice(device, password);
|
|
|
+ if (!clearSavedPasswordRequested)
|
|
|
+ {
|
|
|
+ SavePasswordForDevice(device, password);
|
|
|
+ }
|
|
|
+
|
|
|
SetStatus("连接成功。", StatusMessageType.Success, true);
|
|
|
OpenDeviceDetailsWindow(baseAddress, selectedAdapter?.IPv4Address ?? string.Empty, password);
|
|
|
return;
|
|
|
@@ -360,7 +362,7 @@ public partial class MainWindow : Window
|
|
|
SetStatus("管理密码错误,请重新输入。", StatusMessageType.Error, true);
|
|
|
SetBusyState(false);
|
|
|
MessageBox.Show(this, "管理密码校验失败,请重新输入管理密码。", "密码错误", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
|
- if (!TryPromptForPassword(device, out password))
|
|
|
+ if (!TryPromptForPassword(device, string.Empty, out password, out _))
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
@@ -393,15 +395,17 @@ public partial class MainWindow : Window
|
|
|
window.ShowDialog();
|
|
|
}
|
|
|
|
|
|
- private bool TryPromptForPassword(DiscoveredDevice device, out string password)
|
|
|
+ private bool TryPromptForPassword(DiscoveredDevice device, string savedPassword, out string password, out bool clearSavedPasswordRequested)
|
|
|
{
|
|
|
var label = string.IsNullOrWhiteSpace(device.Mac) ? device.Lan2Ip : device.Mac;
|
|
|
- var window = new PasswordPromptWindow(label)
|
|
|
+ var window = new PasswordPromptWindow(label, savedPassword)
|
|
|
{
|
|
|
Owner = this,
|
|
|
};
|
|
|
|
|
|
- if (window.ShowDialog() == true)
|
|
|
+ var dialogResult = window.ShowDialog();
|
|
|
+ clearSavedPasswordRequested = window.ClearSavedPasswordRequested;
|
|
|
+ if (dialogResult == true)
|
|
|
{
|
|
|
password = window.Password;
|
|
|
return true;
|