Я прочитал несколько статей о том, как использовать Attached Properties для привязки к значению PasswordBox в WPF. Тем не менее, каждая статья также ссылается на документацию .NET, в которой объясняется, почему PasswordBox не был создан в первую очередь.Использование PasswordBox с WPF - MVVM
Я не считаю себя экспертом по безопасности любым способом, но я полагаю, что кто-то из Microsoft знал, что они делают, и я не должен прилагать усилия, пытаясь его отменить.
Итак, вместо этого я придумал свое решение.
public class LoginViewModel
{
// other properties here
public PasswordBox Password
{
get { return m_passwordBox; }
}
// Executed when the Login button is clicked.
private void LoginExecute()
{
var password = Password.SecurePassword;
// do more stuff...
}
}
Тогда в моем XAML, я просто визуализировать PasswordBox связыванием поле Пароль к ContentPresenter
.
Так что мой вопрос ... есть ли проблема с этим? Я понимаю, что я как бы разбиваю MVVM таким образом, позволяя реальным элементам управления отображаться в моей модели ViewModel, но по крайней мере это кажется более правильным, чем просто снятие пароля.
Если это, по сути, проблема, может ли кто-нибудь придумать решение, которое не связано с использованием Attached Properties и сохранением пароля в ViewModel?
Спасибо! -J
В чем проблема с приложенным имуществом? Является ли это, что тип свойства является строкой? Почему бы не сделать SecureString? –
Как я уже сказал выше, казалось, что причина была в том, что это не был DependencyProperty, поэтому найти работу вокруг, казалось, был неправильным подходом. Полагаю, я мог бы просто «привязать» к свойству SecurePassword. – jeremyalan
Проблема, когда свойство Password является связующим: это значение легко отслеживается внешним программным обеспечением. таких как SNOOP. как легко украсть ваш пароль. – ktutnik