Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengikat PasswordBox dengan selamat ke ViewModel dalam WPF?

Bagaimana untuk Mengikat PasswordBox dengan selamat ke ViewModel dalam WPF?

Mary-Kate Olsen
Lepaskan: 2025-01-23 15:26:09
asal
808 orang telah melayarinya

How to Securely Bind a PasswordBox to a ViewModel in WPF?

Ikat PasswordBox dengan selamat dalam mod WPF MVVM: langkah terperinci

Mengikat PasswordBox dalam seni bina MVVM akan menyebabkan isu keselamatan, tetapi kaedah pengikatan yang selamat dan boleh dipercayai boleh dicapai. Teknik biasa digambarkan dalam contoh kod yang disediakan di http://www.wpftutorial.net/PasswordBox.html.

Amalan mengikat Kata Laluan

Mari kita mendalami pelaksanaan teknologi ini. Andaikan bahawa ViewModel mengandungi sifat nama pengguna dan kata laluan. Mengikat nama pengguna ke TextBox adalah sangat mudah, tetapi mengikat kata laluan ke PasswordBox memerlukan sedikit pengubahsuaian.

Menggunakan kod yang disediakan, anda boleh memasukkan PasswordBox dalam XAML:

<code class="language-xml"><passwordbox ff:passwordhelper.attach="True" ff:passwordhelper.password="{Binding Path=Password}" width="130"></passwordbox></code>
Salin selepas log masuk

Dengan persediaan ini, kod berikut menunjukkan menggunakan sifat Perintah dalam ViewModel:

<code class="language-csharp">private DelegateCommand loginCommand;

public string Username { get; set; }
public string Password { get; set; }

public ICommand LoginCommand
{
    get
    {
        if (loginCommand == null)
        {
            loginCommand = new DelegateCommand(Login, CanLogin);
        }
        return loginCommand;
    }
}

private bool CanLogin()
{
    return !string.IsNullOrEmpty(Username);
}

private void Login()
{
    bool result = securityService.IsValidLogin(Username, Password);
}</code>
Salin selepas log masuk

Langkah tersembunyi?

Walaupun kod di atas memastikan pengikatan, terdapat langkah kritikal dalam pengikatan PasswordBox yang sering diabaikan. Apabila memeriksa XAML, anda akan melihat bahawa pengikatan nama pengguna TextBox berfungsi seperti yang diharapkan, tetapi pengikatan kata laluan PasswordBox tidak mengemas kini sifat ViewModel.

Pembantu Rahsia

Malah, anda menetapkan titik putus dalam kelas pembantu, mengesahkan bahawa kod itu dilaksanakan tetapi gagal mengemas kini sifat Kata Laluan ViewModel. Di sinilah tiada langkah kritikal.

Pengikatan manual

Untuk melengkapkan pelaksanaan, sambungan perlu diwujudkan antara PasswordBox dan ViewModel. Dalam fail di belakang kod, tentukan pengendali untuk acara PasswordChanged PasswordBox:

<code class="language-csharp">private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
{
    if (this.DataContext != null)
    {
        ((dynamic)this.DataContext).SecurePassword = ((PasswordBox)sender).SecurePassword;
    }
}</code>
Salin selepas log masuk

Kaedah keselamatan

Dengan mentakrifkan sifat SecureString dalam ViewModel dan mengendalikan acara PasswordChanged, anda boleh mendapatkan semula nilai kata laluan dengan selamat sambil mengekalkan prinsip MVVM. Pendekatan ini mengelak daripada melanggar garis panduan keselamatan dan mengekalkan pemisahan yang jelas antara Views dan ViewModels.

Atas ialah kandungan terperinci Bagaimana untuk Mengikat PasswordBox dengan selamat ke ViewModel dalam WPF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan