首页 文章

MVVM中的PasswordBox绑定

提问于
浏览
0

绑定到PasswordBox的问题,这是一个安全风险,但我使用的是MVVM模式,我在这里发现了一些有趣的代码

http://www.wpftutorial.net/PasswordBox.html

我的LoginViewModel中基本上有用户名和密码的属性 . 用户名很好,因为它是一个TextBox .

我按照说明使用了上面的代码并输入了这个

<PasswordBox ff:PasswordHelper.Attach="True"
ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>

当我将PasswordBox作为TextBox并且绑定路径=密码时,我的LoginViewModel中的属性已更新 .

我的代码很简单,基本上我有一个Command for my Button . 当我按下它时会调用CanLogin,如果它返回true,则调用Login . 您可以看到我在这里查看我的属性用户名,这非常有用 .

在登录中,我向我的服务发送用户名和密码,用户名包含我的视图中的数据,但密码为空|空

<TextBox Text="{Binding Path=Username, UpdateSourceTrigger=PropertyChanged}"
     MinWidth="180" />

<PasswordBox ff:PasswordHelper.Attach="True" 
         ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/>

我有我的TextBox,这没问题,但在我的ViewModel中,密码为空 .

我放了一个断点,确定代码进入静态助手类但它永远不会在我的ViewModel中更新我的密码

2 回答

  • 0

    请停止您正在尝试做的事情,因为在应用程序周围传递未加密的密码是一个可怕的安全风险 . 您应该像这样登录您的用户:

    尽可能为它们提供用户名和密码输入字段,但应立即加密密码的值 . 您的数据库应仅存储这些加密密码 . 因此,要验证用户是否输入了正确的密码,只需比较加密密码的值即可 .

    因此,您无需将用户密码字段的值传递给数据库进行检查...您需要将加密的密码值从数据库传递到视图模型 .

  • 0

    您应该按照MSDN的建议使用SecureString,请参阅此处的参考资料:

    wpf password box into a SecureString in C#

    让我知道如果有帮助,我们已成功通过附加属性绑定密码,但希望您可以自己学习上述链接:)

相关问题